how to replace non ascii char in python
我需要在python中替换非ascii字符,比如
1 | SyntaxError: Non-ASCII character '\xc2' in file test.py but no encoding declared; see http://www.python.org/peps/pep-0263.html for details` |
在遵循网页上的指示后,我得到
1 | UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 449: ordinal not in range(128) |
以下是我的代码:
1 2 | data = data.replace(u"?", u"1/2") data = re.sub(u"?", u"3/4", data, flags=re.DOTALL) |
我需要在代码中更改什么?
我的文件是:
1 2 3 4 5 6 | #!/usr/bin/python with codecs.open("file.txt","r","utf8") as myfile: data = myfile.read() data = data.replace(u"?", u"1/2") |
文件是:
1 | hello world ? |
您正在将局部变量
改变这一点:
1 2 | with open(file_name,"r") as myfile: data = myfile.read() |
对此:
1 2 3 4 | import io with io.open(file_name, encoding="utf8") as myfile: data = myfile.read() |
我认为您的初始字符串没有正确编码为Unicode。
你正在尝试的工作很好:
1 2 3 | >>> st=u"???" >>> print st.replace(u"?", u"1/2") ?1/2? |
但是目标必须是Unicode才能开始。
看起来您希望将其作为Unicode读取,但pyhton将其作为字符串读取。试试这个,这个问题看起来和你的
https://stackoverflow.com/a/18649608/5504999
< /块引用>
尝试在文件顶部添加
#coding: utf-8 。这将允许使用非ASCII字符。