我試圖讀取由kewords分隔的文本文件。我正在使用字典來組織與每個部分相對應的信息。例如,對於文本文件:將列表附加到字典
*VERTICES
1 0 0
2 10 0
3 10 10
4 0 10
*EDGES
1 1 2
2 1 4
3 2 3
4 3 4
有*EDGES
和*VERTICES
部分。我的目標是產生就像一本字典:
dict = {'*VERTICES': [[0,0], [0,10], [10,0], [10,10]], '*EDGES': [[1,2], [1,4], [2,3], [3,4]]}
這是我的代碼:
with open('c:/geometry.txt','r') as inputfile:
xyz = []
dic = {}
key = None
for line in inputfile:
line = line.replace(',','')
linelist = ' '.join(line.split())
linelist = linelist.split(' ')
if(linelist[0][0]=='*'):
key = linelist[0]
dic[key] = []
else:
for i in range(0,len(linelist)):
string2float = float(linelist[i])
xyz.append(string2float)
dic[key].append(xyz)
del xyz[:]
print(dic)
這是電流輸出:
{'*VERTICES': [[], [], [], []], '*EDGES': [[], [], [], []]}
Emtpy,你可以看到。我猜這個錯誤在dic[key].append(xyz)
。我做錯了什麼?我注意到,如果我嘗試附加行列表(例如dic[key].append(linelist)
),代碼工作正常,但我不會讓我的變量從字符串轉換爲浮動。
有什麼辦法可以讓它與xyz(float)列表一起工作嗎?由於
我不認爲這是有關您當前的問題,而是'你的雙分裂line'變成'linelist'似乎有點傻。爲什麼不使用'linelist = line.split()'並完成它?額外的'join'和'split'完全相反。 – Blckknght
你沒有從你以前的問題得到足夠的:http://stackoverflow.com/questions/35679036/how-to-read-and-organize-text-files-divided-by-keywords。您可以將'linelist'更改爲'list(map(float,linelist))'將它們全部轉換爲浮點。 – AChampion
它們全部爲空的原因是因爲你重複使用了相同的'xyz'列表並刪除了它的內容'del xyz [:]'。只需在'else'塊中創建一個新的'xyz = []''。 – AChampion