在 python 中,有什么方法可以将 unicode 文本格式数据正确转换为 csv?

Any way to get correct conversion for unicode text format data to csv in python?

我正在访问 ftp 服务器上的数据集。下载数据后,我使用 pandas 将其读取为 csv 但出现编码错误。该文件具有 csv 文件扩展名,但在我用 MS excell 打开文件后,数据为 Unicode Text 格式。我想转换那些以 Unicode 文本格式存储的数据集。我怎样才能做到这一点?有什么想法可以完成吗?

我的尝试:

from ftplib import FTP
import os

def mydef():
defaultIP=''
username='cat'
password='cat'

ftp = FTP(defaultIP,user=username, passwd=password)
ftp.dir()

filenames=ftp.nlst() 

for filename in files:
    local_filename = os.path.join('C:\Users\me', filename)
    file = open(local_filename, 'wb')
    ftp.retrbinary('RETR '+ filename, file.write)

    file.close()

ftp.quit()

然后我尝试了这个以获得正确的编码:

mydef.encode('utf-8').splitlines()

但是这个对我不起作用。我用了

以上代码的输出:

这是上面代码的输出片段:

b'\xff\xfeF\x00L\x00O\x00W\x00\t\x00C\x00T\x00Y\x00_\x00R\x00P\x00T\x00\t\x00R\x00E\x00P\x00O\x00R\x00T\x00E\x00R\x00\t\x00C\x00T\x00Y\x00_\x00P\x00T\x00N\x00\t\x00P\x00A\x00R\x00T\x00N\x00E\x00R\x00\t\x00C\x00O\x00M\x00M\x00O\x00D\x00I\x00T\x00Y\x00\t\x00D\x00E\x00S\x00C\x00R\x00I\x00P\x00T\x00I\x00O\x00N\x00\t'

预期输出

该数据集的预期输出应该是正常的 csv 数据,例如普通贸易数据,但编码对我不起作用。

我使用了不同的编码来正确转换 csv 格式数据,但其中 none 对我有用。我怎样才能做到这一点?有什么想法可以完成吗?谢谢

编辑: 我必须更改它 - 现在我删除了开头的 2 个字节(BOM)和结尾的一个字节,因为数据不完整(每个char 需要 2 个字节)


好像不是utf-8而是utf-16BOM

如果我删除前两个字节 (BOM - Bytes Order Mark) 和末尾的最后一个字节因为它不完整(每个字符需要两个字节)并使用 decode('utf-16-le')

b'F\x00L\x00O\x00W\x00\t\x00C\x00T\x00Y\x00_\x00R\x00P\x00T\x00\t\x00R\x00E\x00P\x00O\x00R\x00T\x00E\x00R\x00\t\x00C\x00T\x00Y\x00_\x00P\x00T\x00N\x00\t\x00P\x00A\x00R\x00T\x00N\x00E\x00R\x00\t\x00C\x00O\x00M\x00M\x00O\x00D\x00I\x00T\x00Y\x00\t\x00D\x00E\x00S\x00C\x00R\x00I\x00P\x00T\x00I\x00O\x00N\x00'.decode('utf-16-le')

然后我得到

'FLOW\tCTY_RPT\tREPORTER\tCTY_PTN\tPARTNER\tCOMMODITY\tDESCRIPTION'

编辑: 同时我发现 Python - Decode UTF-16 file with BOM