我想将数据从第一个文件提取到第二个文件,并将它们放入特定的标签中。第一个文件如下所示:
"city1" : [[1.1,1.2],[2.1,2.2],[3.1,3.2]],
"city2" : [[5.0,0.2],[4.1,3.2],[7.1,8.2]],
...
所以类型就像字典,其中值是列表列表
不幸的是,打开文件时出现错误:要解压的值太多
我正在尝试像这样打开:
lines = {}
with open("shape.txt", "r") as f:
for line in f:
(key,val) = line.split()
d[key] = val
之后,我想提取这个城市并协调到具有这样结构的第二个文件:
<state name = 'city1'>
<point lat='first value from first list', lng='second value from first list/>
<point lat='first value from second list', lng='second value from second list/>
</state>
<state name = 'city2'>
the same action like above
我当时在想是否还有其他解决方案?
txt = '''
"city1" : [[1.1,1.2],[2.1,2.2],[3.1,3.2]],
"city2" : [[5.0,0.2],[4.1,3.2],[7.1,8.2]],
'''
template = '''<state name = '{city}'>
<point lat='{vals[0][0]}', lng='{vals[0][1]}' />
<point lat='{vals[1][0]}', lng='{vals[1][1]}' />
</state>'''
from ast import literal_eval
data = literal_eval('{' + txt + '}')
print(data)
for k, v in data.items():
print(template.format(city=k, vals=v))
打印:
<state name = 'city1'>
<point lat='1.1', lng='1.2' />
<point lat='2.1', lng='2.2' />
</state>
<state name = 'city2'>
<point lat='5.0', lng='0.2' />
<point lat='4.1', lng='3.2' />
</state>
使用文件I / O:
template = '''<state name = '{city}'>
<point lat='{vals[0][0]}', lng='{vals[0][1]}' />
<point lat='{vals[1][0]}', lng='{vals[1][1]}' />
</state>'''
from ast import literal_eval
with open('sample.txt', 'r') as f_in, open('sample.out', 'w') as f_out:
data = literal_eval('{' + f_in.read() + '}')
for k, v in data.items():
print(template.format(city=k, vals=v), file=f_out)