我正在尝试将文件的内容存储到字典中,并且当我调用其键时我想返回一个值。文件的每一行都有两个用逗号分隔的项(首字母缩写词和相应的短语),共有585行。我想将逗号左侧的首字母缩略词存储到键中,将逗号右侧的短语存储到值中。这就是我所拥有的:
def read_file(filename):
infile = open(filename, 'r')
for line in infile:
line = line.strip() #remove newline character at end of each line
phrase = line.split(',')
newDict = {'phrase[0]':'phrase[1]'}
infile.close()
这是我在尝试查找值时得到的结果:
>>> read_file('acronyms.csv')
>>> acronyms=read_file('acronyms.csv')
>>> acronyms['ABT']
Traceback (most recent call last):
File "<pyshell#65>", line 1, in <module>
acronyms['ABT']
TypeError: 'NoneType' object is not subscriptable
>>>
如果我将return newDict
添加到函数正文的末尾,那么当我调用{'phrase[0]':'phrase[1]'}
时,它显然会返回read_file('acronyms.csv')
。我也试过{phrase[0]:phrase[1]}
(没有单引号),但返回相同的错误。谢谢你的帮助。
答案 0 :(得分:1)
0:00:00->000000
1:05:23->010523
2:10:46->021046
3:16:09->031609
4:21:32->042132
5:26:55->052655
6:32:18->063218
7:37:41->073741
8:43:04->084304
9:48:27->094827
10:53:50->105350
11:59:13->115913
13:04:36->130436
14:09:59->140959
15:15:22->151522
16:20:45->162045
17:26:08->172608
18:31:31->183131
19:36:54->193654
20:42:17->204217
21:47:40->214740
22:53:03->225303
23:58:26->235826
答案 1 :(得分:0)
def read_file(filename):
infile = open(filename, 'r')
newDict = {}
for line in infile:
line = line.strip() #remove newline character at end of each line
phrase = line.split(',', 1) # split max of one time
newDict.update( {phrase[0]:phrase[1]})
infile.close()
return newDict
你的原文在循环的每次迭代中创建一个新的字典。
答案 2 :(得分:0)
首先,您将在循环的每次迭代中创建一个新字典。相反,创建一个字典并在每次越过一行时添加元素。其次,'phrase[0]'
包含撇号,使其成为一个字符串,而不是对刚刚创建的短语变量的引用。
另外,请尝试使用with关键字,以便以后不必显式关闭该文件。
def read(filename):
newDict = {}
with open(filename, 'r') as infile:
for line in infile:
line = line.strip() #remove newline character at end of each line
phrase = line.split(',')
newDict[phrase[0]] = phrase[1]}
return newDict