Python 将文件从文本文件读入列表

Python 将文件从文本文件读入列表,python,Python,我有一个文本文件,其中包含: name: Joe score: 77 class: Jupiter name: Jess score: 87 class: Neptune . . . 我使用python将文件内容读入两个不同的列表。我想要的格式是: list1 = [['Joe',77],['Jess',87]] list2 = [['Joe','Jupiter'],['Jess','Neptune']] 我试着写: filename = open("student.txt","r")

我有一个文本文件,其中包含:

name: Joe
score: 77
class: Jupiter

name: Jess
score: 87
class: Neptune

.
.
.
我使用python将文件内容读入两个不同的列表。我想要的格式是:

list1 = [['Joe',77],['Jess',87]]
list2 = [['Joe','Jupiter'],['Jess','Neptune']]
我试着写:

filename = open("student.txt","r")
studFile = filename
list1 = []
list2 = []

for line in studFile:
    value = line.strip().split(": ")
    if "name" in line:
        list1.append(value[1])
        list2.append(value[1])
    if "score" in line:
        list1.append(int(value[1]))
    if "class" in line:
        list2.append(value[1])

我可以感觉到我正在以一种非常奇怪的方式阅读文件内容,使用(if“name”)子句。有更好的方法吗?

我会选择使用dicts的解决方案,使以后更容易访问所有数据。在本例中,我使用“name”作为键

list1 = []
tmp_dict = {}
with open('student.txt','r') as file:
    for line in file:
        value = line.strip().split(': ')
        if 'name' in line:
            name = value[1]
            tmp_dict[name] = {}
        if 'score' in line:
            tmp_dict[name]['score'] = int(value[1])
        if 'class' in line:
            tmp_dict[name]['class'] = value[1]
            list1.append(tmp_dict)
            tmp_dict = {}
print(list1)
输出:

[{'Joe': {'score': 77, 'class': 'Jupiter'}}, {'Jess': {'score': 87, 'class': 'Neptune'}}]
[['Joe', 77], ['Jess', 87]]
[['Joe', 'Jupiter'], ['Jess', 'Neptune']]
或者修复原始代码以使其按预期工作:

list1 = []
list2 = []

name = None
with open('student.txt','r') as file:
    for line in file:
        value = line.strip().split(': ')
        if 'name' in line:
            name = value[1]
        if 'score' in line:
            list1.append([name, int(value[1])])
        if 'class' in line:
            list2.append([name, value[1]])

print(list1)
print(list2)
输出:

[{'Joe': {'score': 77, 'class': 'Jupiter'}}, {'Jess': {'score': 87, 'class': 'Neptune'}}]
[['Joe', 77], ['Jess', 87]]
[['Joe', 'Jupiter'], ['Jess', 'Neptune']]

这不会创造出
['Joe',77,'Jess',87]
而不是
[[Joe',77],'Jess',87]
?一个
的dict
不是更合适吗?一本字典不适合你做这项工作吗?@clink,这与你几天前问的问题有关,你已经找到了答案。那你为什么不接受任何答案呢?或者至少继续讨论建议的解决方案,而不是提出新的问题。