【发布时间】:2016-10-29 19:30:49
【问题描述】:
我正在将一个 txt 文件读入 Python,提取其中的一部分,然后将结果输出为 CSV。
问题是,我遇到了不知道如何解决的编码问题。这是发生了什么:
输入文件是从 Adobe Acrobat 导出的,在将设置更改为“UTF-8”后,我在其中输出“纯文本文件”。
-
然后我像这样将其读入 Python
inputfile=codecs.open(inputfile, "r", "utf-8") 我运行一个正则表达式来提取其中的一部分,将它们变成一个熊猫
DataFrame(这里称为“数据帧”)。-
然后它将数据帧作为 csv 文件写出,但无论我怎么做,我都会遇到问题。我试过了
outputfile=codecs.open(outputfile, "w", "utf-8") dataframe.to_csv(outputfile, encoding="utf-8")
但这给了我一个
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 23: ordinal not in range(128)
问题:
这是我不明白的第一件事:如果我设置 to_csv encoding="utf-8",为什么会涉及“ascii”编解码器?接docs,这是一个
表示要在输出文件中使用的编码的字符串,在 Python 2 上默认为“ascii”...
我可以通过不在codecs.open() 中指定“utf-8”来避免此错误。但是,一旦我将文件导入 Excel(将导入设置为“Unicode-Utf-8”),所有 ' 字符都显示为 __。据我所知,没有其他编码错误,如果我在 TextWrangler 中打开 csv 文件,一切正常。
问题出在哪里——是pandas的输出吗? Excel 还是其他什么?
有没有更好的方法来解决这个问题?
我在 Mac 上使用 Python 2。我没有使用 Python csv 模块,因为没有解决方法它不会执行 UTF。
感谢任何帮助!
编辑: 这是输入文件在 WordWrangler 中的样子:
23 它躺在地板上。
这里是 Excel:
它躺在地板上。
在 Fawful 的有用评论之后,我还尝试在 Excel 中打开原始文本文件。似乎它已经将 ' 编码为 __ 。
【问题讨论】:
标签: python csv pandas encoding utf-8