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

标签 python csv python-unicode

我正在访问 ftp 服务器上的数据集。下载数据后,我使用 pandas 将其读取为 csv 但出现编码错误。该文件具有 csv 文件扩展名,但在我使用 MS Excel 打开该文件后,数据采用 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()

但这对我不起作用。我用过this solution

上述代码的输出:

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

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 格式数据,但它们都不适合我。我怎样才能做到这一点?有什么想法可以完成这件事吗?谢谢

最佳答案

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

<小时/>

看起来不是utf-8而是带有BOMutf-16

如果我删除前两个字节(BOM - 字节顺序标记)和末尾的最后一个字节,因为它不完整(每个字符需要两个字节)并使用 解码('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

关于python - 有什么方法可以在 python 中将 unicode 文本格式数据正确转换为 csv 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59741722/

相关文章:

python - sklearn中roc_auc值有什么区别

c - 在为 Excel 重写 CSV 存档时使用 strtok

python - 如何跳过 url 中的 Unicode 错误

Python 打印 unicode 列表

python - 打印 unicode 字符名称 - 例如 'GREEK SMALL LETTER ALPHA' - 而不是 'α'

python - 使用 PolynomialFeatures 和 LinearRegression 绘制 n 次预测线,当 n > 1 时无法正常工作

python - Snakemake 使用字典值扩展

python - SQL 的差异

arrays - 在 scikit-learn 中使用 SVM 时出现 ValueError : setting an array element with a sequence.

php - 直接将CSV文件数据插入mysql,