如何在python中替换非ascii字符
我需要在Python中替换非ASCII字符,如如何在python中替换非ascii字符,python,python-2.x,Python,Python 2.x,我需要在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` 按照指示走了之后,我就开始 UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in posit
¾
,但我得到
SyntaxError: Non-ASCII character '\xc2' in file test.py but no encoding declared; see http://www.python.org/peps/pep-0263.html for details`
按照指示走了之后,我就开始
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 ½
看起来您希望将其读取为unicode,但pyhton将其读取为字符串。试试这个,问题看起来与您的
UnicodeDecodeError
尝试在文件顶部添加
#编码:utf-8
。这将允许使用非ASCII字符。看起来您希望将其读取为unicode,但pyhton将其读取为字符串。试试这个,问题看起来与您的UnicodeDecodeError
尝试在文件顶部添加
#编码:utf-8
。这将允许使用非ASCII字符。您正在将局部变量数据
读取为字节,但随后将数据
视为已是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()
您将局部变量
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()
我认为您的初始字符串没有正确编码为unicode 您正在尝试的工作正常:
>>> st=u"¼½¾"
>>> print st.replace(u"½", u"1/2")
¼1/2¾
但首先目标必须是unicode 我认为您的初始字符串没有正确编码为unicode 您正在尝试的工作正常:
>>> st=u"¼½¾"
>>> print st.replace(u"½", u"1/2")
¼1/2¾
但首先目标必须是unicode @TusharGupta这个移除字符…如果它可以移除它,你可以用它来替换它。试试看;)我确实尝试了很多,这就是为什么我在问,我现在没主意了。你能提供
数据的内容(或其中的一小部分)吗?@TusharGupta这个删除字符…如果它能删除它,你可以用它来替换它。试试看;)我做了很多尝试,这就是为什么我要问,我现在没主意了。你能提供数据的内容(或其中的一小部分)吗?我得到:UnicodeEncodeError:“ascii”编解码器不能在383位对字符u'\uf057'进行编码:序号不在范围内(128)你试过用u.decode('utf-8')读取replace()中的第一个参数吗?看看@wim的答案。我尝试了:使用编解码器。打开(HTML_路径+文件名,“r”,“utf8”)作为myfile:data=myfile.read()data=data.replace(u“½”,u“1/2”),我得到:SyntaxError:文件中的非ASCII字符“\xc2”尝试我的答案,即在文件顶部添加#编码:utf-8
。它允许程序读取非ascii字符。我得到:UnicodeEncodeError:“ascii”编解码器无法对383位的字符u'\uf057'进行编码:序号不在范围内(128)您是否尝试过用u.decode('utf-8')读取replace()中的第一个参数?请看@wim的答案。我尝试过:使用编解码器。打开(HTML_路径+文件名,“r”,“utf8”)作为myfile:data=myfile.read()data=data.replace(u“½”,u“1/2”),我在文件中得到:语法错误:非ASCII字符“\xc2”。请尝试我的答案,即在文件顶部添加#编码:utf-8
。它允许程序读取非ascii字符。这正是我的代码所做的:数据。替换(u“½”,u“1/2”)
但不起作用数据
不是unicode字符串。这就是为什么它不适合你。看看wim的答案。我尝试了:使用编解码器。打开(HTML_路径+文件名,“r”,“utf8”)作为myfile:data=myfile.read()data=data.replace(u“½”,u“1/2”),我得到:SyntaxError:文件中的非ASCII字符'\xc2',这正是我的代码所做的:数据。replace(u“½”,u“1/2”)
但不起作用数据
不是unicode字符串。这就是为什么它不适合你。看看wim的答案。我试着:使用编解码器。打开(HTML_路径+文件名,“r”,“utf8”)作为myfile:data=myfile.read()data=data.replace(u“½”,u“1/2”),我在文件中得到:语法错误:非ASCII字符“\xc2”,直到在文件中得到:语法错误:非ASCII字符“\xc2”,直到在文件中得到:语法错误:非ASCII字符“\xc2”