簡體   English   中英

將文件從文本文件讀取到列表列表中

[英]Reading files from a text file into a list of list

我有一個包含以下內容的文本文件:

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”)子句以一種非常奇怪的方式讀取文件內容一樣。 有更好的方法嗎?

我將尋求使用dict的解決方案,以便以后更輕松地訪問所有數據。 在此示例中,我使用“名稱”作為鍵。

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'}}]

或者修復您的原始代碼以使其按預期工作:

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', 77], ['Jess', 87]]
[['Joe', 'Jupiter'], ['Jess', 'Neptune']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM