具有多列

时间:2016-02-18 03:40:56

标签: python dictionary key rows

我有一个包含以下内容的文本文件

姓氏,名字,电子邮件,一些任意身份证号码和电话号码。

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 ...}

2 个答案:

答案 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