小编ven*_*nky的帖子

Python UTF-16 CSV阅读器

我有一个UTF-16 CSV文件,我必须阅读.Python csv模块似乎不支持UTF-16.

我使用的是python 2.7.2.我需要解析的CSV文件是大量运行到几GB的数据.

John Machin的答案问题如下

print repr(open('test.csv', 'rb').read(100))
Run Code Online (Sandbox Code Playgroud)

输出test.csv只有abc作为内容

'\xff\xfea\x00b\x00c\x00'
Run Code Online (Sandbox Code Playgroud)

我认为csv文件是在美国的Windows机器上创建的.我正在使用Mac OSX Lion.

如果我使用phihag提供的代码和包含一条记录的test.csv.

示例test.csv使用的内容.下面是print repr(open('test.csv','rb').read(1000))输出

'\xff\xfe1\x00,\x002\x00,\x00G\x00,\x00S\x00,\x00H\x00 \x00f\x00\xfc\x00r\x00 \x00e\x00 \x00\x96\x00 \x00m\x00 \x00\x85\x00,\x00,\x00I\x00\r\x00\n\x00'
Run Code Online (Sandbox Code Playgroud)

代码由phihag

import codecs
import csv
with open('test.csv','rb') as f:
      sr = codecs.StreamRecoder(f,codecs.getencoder('utf-8'),codecs.getdecoder('utf-8'),codecs.getreader('utf-16'),codecs.getwriter('utf-16'))      
      for row in csv.reader(sr):
         print row
Run Code Online (Sandbox Code Playgroud)

输出上面的代码

['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85']
['', '', 'I']
Run Code Online (Sandbox Code Playgroud)

预期产量是

['1', '2', 'G', 'S', 'H f\xc3\xbcr e \xc2\x96 m \xc2\x85','','I']
Run Code Online (Sandbox Code Playgroud)

python csv utf-16

8
推荐指数
1
解决办法
1万
查看次数

标签 统计

csv ×1

python ×1

utf-16 ×1