gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:00:48 24 4
gpt4 key购买 nike

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

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

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

为什么 gtk 改变我的编码?

这是一个从 ebay 德国下载的 csv 文件,编码为“iso-8859-15”/“latin”

我不明白为什么这段代码仅适用于 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

没有“导入 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"]

最佳答案

我让它工作的唯一方法是首先将 csv 文件转换为 utf8

#!/usr/bin/env python
# -*- coding: utf8 -*-

CSV_FILE = "EBAY_CSV/ebaycsvfile.csv"
CSV_FILE_UTF8 = "/tmp/utf8_ebay_csvfile.csv"

import csv
import codecs
with open(CSV_FILE) as infile:
with codecs.open(CSV_FILE_UTF8, "wb", encoding="utf8") as outfile:
inlines = [inline.decode("latin") for inline in infile.readlines()]
outfile.writelines(inlines)

csv_reader = csv.DictReader(open(CSV_FILE_UTF8), delimiter=';')
for row in csv_reader:
print row["Name des Käufers"]

关于python - 只能使用 import gtk 读取 csv 文件 - Python - DictReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40348966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com