我有这个程序:
def file(fname):
lines = open(fname).read().splitlines()
return(lines)
print(file('venue.txt'))
它就像我改成列表一样出现了:
['room 1, 10, 250']
如何使用它构建字典数据,以便它可以像这样:
[{'name': 'room 1', 'max': 10, 'cost': 250}]
我可能会建立一些线索。 感谢
编辑:
def file(fname):
lines = open(fname).read().splitlines()
new = []
for i in lines:
split = i.split(', ')
new.append({'name':split[0],'max':split[1],'cost':split[2]})
return(new)
print(file('venue.txt'))
打印:
new.append({'name':split[0],'max':split[1],'cost':split[2]})
IndexError: list index out of range
这是什么意思?
答案 0 :(得分:1)
如果它们被', '
分隔,您可以使用', '
上的split()
。
将返回包含分隔项的数组。
对于你的例子:
current_list = ['room 1, 10, 250']
split = current_list[0].split(', ')
new_list = [{'name': split[0], 'max': int(split[1]), 'cost': int(split[2])}]
print(new_list)
输出:
[{'name': 'room 1', 'max': 10, 'cost': 250}]
更大的列表:
current_list = ['room 1, 10, 250', 'room 2, 30, 500','room 3, 50, 850']
new_list = []
for i in current_list:
split = i.split(', ')
new_list.append({'name': split[0], 'max': int(split[1]), 'cost': int(split[2])})
print(new_list)
输出:
[{'name': 'room 1', 'max': 10, 'cost': 250}, {'name': 'room 2', 'max': 30, 'cost': 500}, {'name': 'room 3', 'max': 50, 'cost': 850}]
答案 1 :(得分:1)
你可以试试这个:
import re
def file(fname):
lines = open(fname).read().splitlines()
return(lines)
headers = ["name", "max", "cost"]
data1 = [re.split(",\s+", i) for i in file("venue.txt")]
final_data = [{a:b for a, b in zip(headers, data} for data in data1]
print(final_data)