我试图读取由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