今天我找到了一个脚本,帮助我完成了将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"]
答案 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'
应解决此问题。