如何在Python中分割文件行并将数据放入字典中

-2 投票
5 回答
10681 浏览
提问于 2025-04-30 22:02

我正在尝试读取一个文本文件,并把里面的数据放到一个字典里。我的文件大概是这样的:

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() 方法会自动帮你处理这个问题。

撰写回答