用';Python、Excel中的字符
我正在将一个txt文件读入Python,提取其中的一部分,然后将结果输出为CSV 问题是,我不知道如何解决编码打嗝。发生的情况如下:用';Python、Excel中的字符,python,csv,pandas,encoding,utf-8,Python,Csv,Pandas,Encoding,Utf 8,我正在将一个txt文件读入Python,提取其中的一部分,然后将结果输出为CSV 问题是,我不知道如何解决编码打嗝。发生的情况如下: 输入文件是从AdobeAcrobat导出的,在将设置更改为“UTF-8”后,我在其中输出一个“纯文本文件” 然后我像这样将其读入Python inputfile=codecs.open(inputfile, "r", "utf-8") 我运行一个正则表达式来提取它的一部分,使它们成为一个数据框架(这里称为“数据框架”) 然后它将数据帧作为csv文件写入,但无论
inputfile=codecs.open(inputfile, "r", "utf-8")
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)
问题:
这是我没有得到的第一件事:如果我将设置为_csvencoding=“utf-8”
,为什么会涉及到“ascii”编解码器?根据法律,这是一个
表示要在输出文件中使用的编码的字符串,在Python 2上默认为“ascii”
我可以通过在codecs.open()
中不指定“utf-8”来避免此错误。但是,一旦我将文件导入Excel(将import设置为“Unicode-Utf-8”),所有的字符都显示为u u。据我所知,没有其他编码错误,如果我在TextWrangler中打开csv文件,一切正常
- 这里的问题在哪里?是熊猫的产出吗 Excel,还是别的什么
- 有没有更好的办法解决这个问题
在Fawful的有用评论之后,我还尝试在Excel中打开原始文本文件。似乎它已经在那一个中编码了“as” 不是一个干净的解决方案,但为了快速修复,只需使用。替换('\0xe2','')从pandas数据帧写入文件时,请不要使用
编解码器
文件对象pandas.to_csv()
已经对您的数据进行了编码,然后编解码器
文件对象必须尝试解码(作为ASCII)才能对其重新编码
只需使用常规文件:
with open(outputfile, "w") as outputfile:
dataframe.to_csv(outputfile, encoding="utf-8")
您也可以使用
csv
模块,但在将行传递给csv.writer().writerow()函数之前,必须将所有行数据编码为UTF-8。其中包含的代码可以为您自动执行此操作。因此看起来这是一个Excel(至少是Mac Excel 2011)问题;虽然它确实提供了“Unicode UTF-8”设置,但它实际上无法处理Unicode字符
例如,请参见Microsoft提供的本文件和本文件。我打开的文件数量刚好。我甚至不知道我在这台机器上有这个…谢谢,那确实有用!我宁愿避免这样做,因为我还有几个文件要处理,我担心黑客可能会累积…谢谢!我有一个关于(outputfile,“w”,“utf-8”)
的快速问题——这对我不起作用,它要求一个“整数”。真的可以接受“utf-8”设置吗?我在文件里也找不到。。。如果我去掉了utf-8部分,一切都会正常,但Excel仍然会以同样的方式出错。我认为这是Acrobat导出的问题,但是WordWrangler中的一切都正常…@patrick:对不起,那是我的错误,复制粘贴错误。啊,好的!不过,知道熊猫编码这件事很好。我会尝试一下csv模块,但我开始认为这不是我真正在做的事情,而是Excel或Acrobat。