Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.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、Excel中的字符_Python_Csv_Pandas_Encoding_Utf 8 - Fatal编程技术网

用';Python、Excel中的字符

用';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文件写入,但无论

我正在将一个txt文件读入Python,提取其中的一部分,然后将结果输出为CSV

问题是,我不知道如何解决编码打嗝。发生的情况如下:

  • 输入文件是从AdobeAcrobat导出的,在将设置更改为“UTF-8”后,我在其中输出一个“纯文本文件”

  • 然后我像这样将其读入Python

    inputfile=codecs.open(inputfile, "r", "utf-8")
    
  • 我运行一个正则表达式来提取它的一部分,使它们成为一个数据框架(这里称为“数据框架”)

  • 然后它将数据帧作为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)
    
    问题:

    这是我没有得到的第一件事:如果我将设置为_csv
    encoding=“utf-8”
    ,为什么会涉及到“ascii”编解码器?根据法律,这是一个

    表示要在输出文件中使用的编码的字符串,在Python 2上默认为“ascii”

    我可以通过在
    codecs.open()
    中不指定“utf-8”来避免此错误。但是,一旦我将文件导入Excel(将import设置为“Unicode-Utf-8”),所有的字符都显示为u u。据我所知,没有其他编码错误,如果我在TextWrangler中打开csv文件,一切正常

    • 这里的问题在哪里?是熊猫的产出吗 Excel,还是别的什么

    • 有没有更好的办法解决这个问题

    我正在Mac上使用Python 2。我没有使用PythonCSV模块,因为如果没有解决方法,它不会执行UTF

    感谢您的帮助

    编辑: 以下是WordWrangler中输入文件的外观:

    二十三 它躺在地板上

    以下是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。