【发布时间】:2014-05-17 14:06:28
【问题描述】:
我的目标是在 Python 中创建一个字典。我有一个 .csv 文件,其中包含两列,第一列是“单词”,另一列是“含义”。我正在尝试以字典格式读取 csv 文件,并在给出“单词”时获取“含义”。
你能告诉我如何获得'word'的价值吗?这是我尝试过的:
我的代码是,
>>> with open('wordlist.csv', mode = 'r') as infile:
... reader = csv.reader(infile)
... with open('wordlist.csv', mode = 'w') as outfile:
... writer = csv.writer(outfile)
... mydict = {rows[0]:rows[1] for rows in reader}
... print(mydict)
...
结果是,
{}
我尝试的下一个是,
>>> reader = csv.reader(open('wordlist.csv', 'r'))
>>> d = {}
>>> for row in reader:
... k, v = row
... d[k] = v
...
但是当我想用这个的时候,结果是这样的——
>>> d['Try']
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Try'
我尝试的下一个代码是,
>>> reader = csv.DictReader(open('wordlist.csv'))
>>> result = {}
>>> for row in reader:
... key = row.pop('word')
... if key in result:
... pass
... result[key] = row
... print result
...
它根本没有给我任何答案。
>>> for row in reader:
... for column, value in row.iteritems():
... result.setdefault(column, []).append(value)
... print result
...
这也没有给我一个结果。
【问题讨论】:
-
CSV 文件的顶部是否有标题行?多少?如果可能,请提供您尝试读取的 CSV 文件顶部的几行示例。这应该有助于我们了解它为什么不起作用。
-
您的第一个代码似乎打开
final_word.csv进行读取,然后再次打开它以进行写入,这将清除文件的内容。这似乎不是你想要的。 -
确实,鉴于 DSM 指出的问题,我怀疑在您以后的测试中该文件为空!我希望你有一个可用的备份副本。您的代码的更高版本可能会或可能不会工作,具体取决于文件的内容。例如,是否有标题行?您是否有重复的
word值(如果有,您想如何处理它们)?
标签: python csv dictionary