只能用import gtk读取csv文件 - Python - DictReader

时间:2016-10-31 19:11:59

标签: python csv gtk codec

今天我找到了一个脚本,帮助我完成了将gtk2脚本更改为gtk3的大部分工作:https://git.gnome.org//browse/pygobject/tree/pygi-convert.sh

但是从未使用Gtk的脚本也停止了工作。只是因为脚本中不再出现“import gtk”。

我现在尝试了一些事情,让它在没有“import gtk”的情况下工作,但无法让它运行。

为什么gtk会改变我的编码?

这是从 ebay德国下载的 csv-file ,以'iso-8859-15'/'拉丁'编码。

我不明白为什么此代码仅使用gtk import

#!/usr/bin/env python
# -*- coding: utf8 -*-
import gtk
import csv
import codecs
csv_reader = csv.DictReader(codecs.open(CSV_FILE, "r", encoding='iso-8859-15'), delimiter=';')
for row in csv_reader:
    pass

没有“import gtk”

Traceback (most recent call last):
  File "import_csv_ebaysales.py", line 9, in <module>
    for row in csv_reader:
  File "/usr/lib/python2.7/csv.py", line 107, in next
    self.fieldnames
  File "/usr/lib/python2.7/csv.py", line 90, in fieldnames
    self._fieldnames = self.reader.next()
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 45: ordinal not in range(128)

我正在使用Ubuntu 14.04

主要问题是,我想使用使用DictReader,当我使用没有“import gtk”时,我必须以这种方式使用密钥:

print row["Name des Käufers".decode("utf8").encode("latin")]

如果我“导入gtk”我可以这样使用:

print row["Name des Käufers"]

2 个答案:

答案 0 :(得分:1)

我使用它的唯一方法是首先将csv文件转换为utf8

where manufacturer = 'FORD' or product_segment = 'CHRYSLER' 
  and manufacturer_date between "&start2"D and "&end2"D
;

答案 1 :(得分:0)

您的文件中似乎有latin-1个编码字符。将encoding='iso-8859-15'更改为encoding='latin-1'应解决此问题。

相关问题