我需要在Python中替换像¾
这样的非ASCII字符,但我得到了
SyntaxError: Non-ASCII character '\xc2' in file test.py but no encoding declared; see http://www.python.org/peps/pep-0263.html for details`
按照指示on the webpage后,我正在
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 449: ordinal not in range(128)
这是我的代码:
data = data.replace(u"½", u"1/2")
data = re.sub(u"¾", u"3/4", data, flags=re.DOTALL)
我需要在代码中更改哪些内容?
我的档案是:
#!/usr/bin/python
with codecs.open("file.txt", "r", "utf8") as myfile:
data = myfile.read()
data = data.replace(u"½", u"1/2")
file.txt是:
hello world ½
答案 0 :(得分:0)
您正在读取局部变量data
作为字节,但随后将data
视为已经是unicode对象。
改变这个:
with open(file_name, "r") as myfile:
data = myfile.read()
对此:
import io
with io.open(file_name, encoding="utf8") as myfile:
data = myfile.read()
答案 1 :(得分:-1)
看起来你想把它读作unicode但是pyhton把它读成一个字符串。试试这个,问题看起来类似于UnicodeDecodeError
尝试在文件顶部添加#coding: utf-8
。这将允许使用非ASCII字符。
答案 2 :(得分:-1)
我认为您的初始字符串未正确编码为unicode。
你正在尝试的工作正常:
>>> st=u"¼½¾"
>>> print st.replace(u"½", u"1/2")
¼1/2¾
但是目标需要从unicode开始。