Сегодня я нашел сценарий, который помог моему сделать большую работу для изменения моего Gtk2 скрипты GTK3: https://git.gnome.org//browse/pygobject/tree/pygi-convert.shМожно читать только CSV файл с импортом GTK - Python - DictReader
Но также скрипт, который никогда не использовал Gtk остановился за работой. Только потому, что «import gtk» больше не был в скрипте.
Я попробовал теперь несколько вещей, чтобы заставить его работать без «импорта gtk», но не смог запустить его.
Почему gtk меняет мою кодировку?
Это CSV-файл загружен с EBay германии закодирован в изо-8859-15 '/ 'Latin'.
Я не понимаю, почему этот код работает только с импортом GTK:
#!/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
Без "импорта 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 и когда я использую без «импорта GTK» Я должен использовать ключи таким образом:
print row["Name des Käufers".decode("utf8").encode("latin")]
Если я «импорт GTK» я могу использовать этот способ:
print row["Name des Käufers"]
Я попытался это уже, если я изменить это я получаю: UnicodeDecodeError: «utf8» кодек не может декодировать байт 0xe4 в позиции 45: недопустимый продолжение байт – oxidworks
К сожалению, это действительно не 'utf8 '. Вместо этого попробуйте 'latin-1'. – lucasnadalutti
Затем я снова получаю: UnicodeEncodeError: кодек ascii не может кодировать символ u '\ xe4' в позиции 45: порядковый номер не в диапазоне (128). - Но я могу открыть без кодировки или использовать только open, если codecs.open. – oxidworks