用python格式化文件输入

2024-09-28 17:20:09 发布

您现在位置:Python中文网/ 问答频道 /正文

对于以下类型的文件

Hannover Magdeburg 148
Bremen Dortmund 23
Hannover Kassel 165
Magdeburg Berlin 166

如何存储值,如

my_dictionary= 
{"from":Hannover,
"to":Magdeburg,
"distance":148
}

都在同一个字典/列表/元组中


<pre>with open('input1.txt') as my_file:
    lines=my_file.read().splitlines()

for i in range(len(lines)):
    print lines[i]

my_file.close()
my_tuple={}
for i in range(len(lines)):
    j=0
    my_list = lines[i].split(' ',1)
    my_tuple["from"]=my_list[j]
    my_tuple["to"][i]=my_list[j+1]
    my_tuple["distance"][i]=my_list[j+2]

for i in range(len(lines)):
    print my_list['from'][i]</pre>

Tags: toinfromforlenmyrangepre
2条回答

csv.DictReader可以为您完成以下工作:

import csv
import pprint

with open('data.txt') as f:
    reader = csv.DictReader(f,fieldnames='from to distance'.split(),delimiter=' ')
    L = list(reader)

pprint.pprint(L)

输出:

[{'distance': '148', 'from': 'Hannover', 'to': 'Magdeburg'},
 {'distance': '23', 'from': 'Bremen', 'to': 'Dortmund'},
 {'distance': '165', 'from': 'Hannover', 'to': 'Kassel'},
 {'distance': '166', 'from': 'Magdeburg', 'to': 'Berlin'}]
data = '''Hannover Magdeburg 148
Bremen Dortmund 23
Hannover Kassel 165
Magdeburg Berlin 166'''
data = data.split()
data = [data[i:i + 3] for i in xrange(0, len(data), 3)]
# [['Hannover', 'Magdeburg', '148'], ['Bremen', 'Dortmund', '23'], ['Hannover', 'Kassel', '165'], ['Magdeburg', 'Berlin', '166']]
data = [{k: v for (k, v) in zip(('from', 'to', 'distance'), el)}
        for el in data]
print data

[{'distance': '148', 'from': 'Hannover', 'to': 'Magdeburg'},
 {'distance': '23', 'from': 'Bremen', 'to': 'Dortmund'},
 {'distance': '165', 'from': 'Hannover', 'to': 'Kassel'},
 {'distance': '166', 'from': 'Magdeburg', 'to': 'Berlin'}]

相关问题 更多 >