我用谷歌搜索并搜索这个网站,但过去的问题对我没有帮助。我想在python中将一个复杂的CSV文件添加到字典中。该文件有六列。
0 0 1 A PAID Gave money to
0 5 5 A CRASH Stock market calamity
0 11 10 A BARD Singing poet
这是一款填字游戏。每列对应于游戏中的值。以第二行为例:
0==y axis on crossword grid
5== x axis on crossword grid
5== the box number on crossword grid
A== Direction on crossword grid (across)
CRASH== the word to be guessed.
Stock market calamity== the crossword clue.
我想将所有这些分配到字典中,让它称之为wordDict,然后将wordDict放入"大字典",称为拼图,使用该字作为键名。
我这是手工制作的。我无法像这样做整个文件。这太繁琐了。 CSV文件中有84行。我想使用for循环来完成这项工作,但不知道我的教科书没有说明这是如何完成的。
请记住,我一次只读取一行中的CSV文件并删除换行符
这是我如何像教科书一样手动完成的:
wordDict['y']='0'
wordDict['x']='5'
wordDict['box']='5'
wordDict['direction']='A'
wordDict['word']='CRASH'
wordDict['clue']='Stock market calamity'
puzzle['CRASH']='wordDict'
有没有办法像这样循环整个过程?
答案 0 :(得分:2)
假设您的输入文件是以制表符分隔的,您可以在几行代码中执行此操作:
import csv
with open(filename) as file:
reader = csv.DictReader(
file,
delimiter='\t',
fieldnames=['y', 'x', 'box', 'direction', 'word', 'clue'],
)
puzzle = {dct['word']: dct for dct in reader}
这给了我:
>>> import pprint
>>> pprint.pprint(puzzle)
{'BARD': {'box': '10',
'clue': 'Singing poet',
'direction': 'A',
'word': 'BARD',
'x': '11',
'y': '0'},
'CRASH': {'box': '5',
'clue': 'Stock market calamity',
'direction': 'A',
'word': 'CRASH',
'x': '5',
'y': '0'},
'PAID': {'box': '1',
'clue': 'Gave money to',
'direction': 'A',
'word': 'PAID',
'x': '0',
'y': '0'}}
请参阅csv.DictReader
上的文档,该文档完成了大部分工作。