Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中替换非ascii字符_Python_Python 2.x - Fatal编程技术网

如何在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

我需要在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 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”