【问题标题】:Encoding a csvreader编码 csvreader
【发布时间】:2015-10-05 07:21:51
【问题描述】:

我有一个 latin1 编码的文件。我将如何使用csv 执行以下等效操作?

>>> import csv
>>> with open(filepath, 'rb') as csvfile:
...     reader = csv.DictReader(csvfile, delimiter='\t', encoding='iso-8859-1')

【问题讨论】:

  • 你的意思是encoding='latin-1'?抱歉,我没有看到困难...
  • @Basic csv.DictReader 不允许将编码设置为参数。
  • 啊,好的。你需要做类似this

标签: python csv


【解决方案1】:
with open(filepath, "r", encoding="ISO-8859-1") as csvfile:
    reader = csv.DictReader(csvfile)

【讨论】:

  • 这实际上在我尝试时不起作用。我也认为你的意思是codes.open
【解决方案2】:

你可以这样做:

def Latin1ToUnicodeDictReader(latin1_data, **kwargs):
    csv_reader = csv.DictReader(latin1_data, **kwargs)
    for row in csv_reader:
        yield {key: value.decode('iso-8859-1').encode('utf8') if value else value for key, value in row.iteritems()}

reader = Latin1ToUnicodeDictReader(csvfile, delimiter='\t')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-06-29
    • 2015-06-23
    相关资源
    最近更新 更多