如何在Python中分割文件行并将数据放入字典中
我正在尝试读取一个文本文件,并把里面的数据放到一个字典里。我的文件大概是这样的:
Alex:3
John:6
Sam:8
基本上,每一行是一个单词和一个整数,中间用冒号分隔。我想打开这个文件,读取内容,在冒号的地方把每一行分开,然后把数据放到字典里,像这样:
{'Alex':3, 'John':6, 'Sam':8}
到目前为止,我的代码是这样的:
d = {}
f = open('scores.txt', 'r')
for line in f.readlines():
line = line.strip()
name = line.split(":")
我该怎么把名字当作键,把整数当作值,放进字典里呢?
5 个回答
-1
d = {}
f = open('scores.txt', 'r')
for line in f:
line = line.strip()
name,age= line.strip(":")
d[name]=age
在上面的代码中,line.strip()
会去掉行末的换行符,line.split(":")
会把字符串按照“:”进行切分,这样你就会得到两个值,分别是名字和年龄,这两个值会被存储起来。d[name]=age
中,名字是键,年龄是存储的值。
-1
你可以使用下面的代码来得到想要的结果。你可以通过使用split来分开单词。rstrip是用来去掉行末的换行符的。
f = open('file name')
dic = {}
for l in f:
k,v = l.split(':')
v=v.rstrip('\n')
if k in dic:
dict.update({k:v })
else:
dic[k] = [v]
print dic
输出结果:
{'John': ['6'], 'Alex': ['3'], 'Sam': ['8']}
0
这里有另一种解决这个问题的方法。
with open('scores.txt') as fp:
result = {}
for line in fp.readlines():
key, value = line.split(':')
result[key] = int(value)
一个好的习惯是使用 with
来打开文件。这样在离开这个上下文时,文件会自动关闭。
1
你的问题出在
name = line.split(":")
split()
这个函数会返回一个列表。你可以像这样把列表里的内容拆开:
name, othervalue = line.split(":")
然后你可以这样做:
mydict[name] = othervalue
4
像这样:
d = {}
f = open('scores.txt', 'r')
for line in f.readlines():
name,score = line.split(":")
d[name] = int(score)
str.split() 这个方法会把字符串里的所有部分分开,放到一个列表里。你可以用我之前展示的语法来获取这两个值。
然后,你可以通过名字变量在字典里找到它,就像你看到的那样。
补充:正如评论中的 @MauroBaraldi 指出的那样,你不再需要使用 line.strip()
,因为 int()
方法会自动帮你处理这个问题。