Dex*_* Ju 4 python csv encoding utf-8
我有一个与python(IPython笔记本)中的编码问题有关的问题.由于这类问题非常普遍和简单,但我仍然无法真正解决它.
我这里有一个CSV文件,你可以看到我们在这个文件中有很多'\ xa0'和其他'\n'字符.
我用了
with io.open(train_fname) as f:
for line in f:
line = line.encode("ascii", "replace")
Run Code Online (Sandbox Code Playgroud)
但它不起作用,我总是得到以下输出.
想象一下,你可以说,你知道什么,没有制裁,没有永久听取IEAA的规定,不再隐藏\ xa0under\xa0借助友好的核能.\ xa0你有2天的时间;\xa0i.e.在检查员中,退出杀害平民.
我试过其他方法
line.replace(u"\xa0", " ")
它也没有用,我也尝试了各种编码在我的文本编辑,崇高文本中打开这个CSV文件.我尝试了windows-1252,utf-8和所有其他编码,但在查看此CSV文件时,我总是得到\ xa0是我的文本编辑.
这是否意味着
\ XA0
已经在此CSV文件中写为输入文本?这不是python编码的问题吗?如果是这种情况,为什么我不能使用replace方法来简单地替换这个字符串?\ xa0表示文件编码在哪?编码?这意味着这个文件是用utf-8编写的,但我试图在ascii或其他情况下打开它?
我搜索了许多问题,但似乎没有提供太多帮助.如果我的问题不是很清楚,请问我.非常感谢你!
`
在\xa0
你看到的是4个字符的序列:\
x
a
0
.所有这些字符都是纯ASCII,因此这里没有字符集问题.
显然,你应该解释这些转义序列.你用空格替换它们的想法是好的,但你必须小心反斜杠字符.当它出现在字符串文字中时,必须写入\\
.试试这个:
line.replace("\\xa0", " ")
Run Code Online (Sandbox Code Playgroud)
要么:
line.replace(r"\xa0", " ")
Run Code Online (Sandbox Code Playgroud)
在r
在前面的字符串意味着字面解释每个字符,甚至反斜杠.
请注意,CSV文件中的数据充满了不一致.例子:
\n
可能意味着一个换行符.\\n
也出现了,它也可能意味着一个线路.\xa0
是一个不间断的空间,以ISO-8859-1编码.\xc2\xa0
是一个不间断的空间,以UTF-8编码.\\xc2\\xa0
也出现了,意思相同.\\\\n
也出现了.因此,要从该文件中获取有意义的内容,您应该重复解释转义序列,直到没有任何变化.之后,尝试将生成的字节序列解释为UTF-8.如果它工作,很好.如果没有,请将其解释为代码页1252(这是ISO-8859-1的超集).
归档时间: |
|
查看次数: |
4654 次 |
最近记录: |