我有一个包含以下内容的文本文件
姓氏,名字,电子邮件,一些任意身份证号码和电话号码。
Hill,Jonah,jonahhill @ outlook.com,015666,123-456-7890
Reynolds,Ryan,rrdp @ yahoo.com,1081254,789-456-1230
Baccarin,Morena,bmdp @ yahoo.com,1011340,159-753-4561
...
我想为每一行创建一个字典,但是要有名字的键,如姓氏,名字等。
这是我正在尝试的代码
d = {}
with open("oldFile.txt") as f:
d = dict(x.rstrip().split(None, 1) for x in f)
print d
我得到类似这样的内容,文件中的所有内容都在一个完整的字典中
{'“hil”':'“jonah”“jonahhill @ outlook”“015666”“123-456-7890”'...}
我正在寻找的结果是
第一个人:
{lastname:“hill”,名字:“Jonah”,电子邮件:“jonahhill@outlook.com ...}
第二人:
{Reynolds,Ryan,rrdp @ yahoo.com,1081254,789-456-1230}
第三人: ...
我希望按键将它们打印出来,例如
文件1中的打印出第一个人,我得到了
第一个人:
{lastname:“hill”,名字:“Jonah”,电子邮件:“jonahhill@outlook.com ...}
答案 0 :(得分:1)
您需要zip
。
keys = ['lastname', 'firstname', 'email', 'id', 'phone']
dicts = []
with open("oldFile.txt") as f:
for line in f:
# Split each line.
line = line.strip().split()
# Create dict for each row.
d = dict(zip(keys, line))
# Print the row dict
print d
# Store for future use
dicts.append(d)
每行的词典可在列表dicts
中找到。
答案 1 :(得分:1)
这样的事情应该完成工作:
keys = ['lastname', 'firstname', 'email', 'id', 'phone']
file = open('oldFile.txt', 'r')
results = []
while True:
line = file.readline()
if not line:
break
else:
content = line.split(', ')
dict = {}
index = 0
for value in content:
if value != '\n':
pair = {keys[index]: value}
dict.update(pair)
index += 1
if dict != {}: # Prevent empty lines from appending to results
results.append(dict)
for dict in results:
print dict