我在处理几个关于编码的文件时遇到了一些问题。我们从另外一家公司接收到csv格式的文件并需要读取它们。
奇怪的是,这些文件似乎是以UTF-16的编码方式进行编码的。我设法解决了这个问题,但是必须使用codecs
模块打开它们并指定编码方式,如下所示。
ENCODING = 'utf-16'
with codecs.open(test_file, encoding=ENCODING) as csv_file:
# Autodetect dialect
dialect = csv.Sniffer().sniff(descriptor.read(1024))
descriptor.seek(0)
input_file = csv.reader(descriptor, dialect=dialect)
for line in input_file:
do_funny_things()
但是,就像我能够以更加不可知论的方式获取方言一样,我认为自动以正确的编码方式打开文件将是很好的,至少对于所有文本文件。还有其他程序,比如vim可以实现这一点。
有人知道在Python 2.6中如何做到这一点吗?
附注:我希望在Python 3中解决这个问题,因为所有字符串都是Unicode...
open()
函数中添加了encoding
和errors
参数。 - Ignacio Vazquez-Abrams