2017-06-01 69 views
0

我有文件data.txt,下面的python代码读取文本和表单字典。阅读文本文件并在python中形成字典

文件:data.txt中

10/20 vinay 
05/31 hunachyal 
11/23 mine 

bday_list = {} 


infile = open("data.txt") 
for line in infile: 
    List_array = [w.strip() for w in line.split("\t")] 
    bday_list[List_array[0]] = List_array[1] 
# print line 

print bday_list 


Op: {'11/23': 'mine', '10/20': 'vinay', '05/31': 'hunachyal'} 

同样如何让dictinaory在格式文件如下所示OP

文件

10/20 Name vinay phone +91094xxx 
    05/31 Name hunachyal phone +91jndjxx 
    11/23 Name mine phone +92jdddxxx 

    OP: 

    {'11/23': {'Phone': '+91kexxx', 'Name': 'mine'}, '10/20': {'Phone': '+919xxxx', 'Name': 'vinay'}, '05/31': {'Phone': '+9194xxxx', 'Name': 'hunachyal'}} 

或者是还有什么方法python来形成数据库,我可以轻松地获取数据。

+0

所有的答案正常工作:) –

回答

2

你也可以试试这个

bday_list = {} 
with open('data.txt', 'r') as R: 
    for line in R: 
     l = line.strip().split() # split the line to list 
     bday_list[l[0]] = {k:v for k,v in zip(l[1::2], l[2::2])} 

PS,
如果您正在使用infile = open(...),而不是with open() as infile:与文件句柄工作,你要记得close文件句柄之后。

2

试试下面的办法:

>>> data = """10/20 Name vinay phone +91094xxx 
... 05/31 Name hunachyal phone +91jndjxx 
... 11/23 Name mine phone +92jdddxxx 
... """ 
>>> 
>>> result = {} 
>>> 
>>> for line in data.splitlines(): 
...  dataList = line.split() 
...  result[dataList[0]] = {dataList[1]: dataList[2], dataList[3]: dataList[4]} 
... 
>>> result 
{'11/23': {'Name': 'mine', 'phone': '+92jdddxxx'}, '10/20': {'Name': 'vinay', 'phone': '+91094xxx'}, '05/31': {'Name': 'hunachyal', 'phone': '+91jndjxx'}} 
1

试试这个:)

infile = open("data.txt") 
for line in infile: 
    List_array = [w.strip() for w in line.split("\t")] 
    bday_list[List_array[0]] ={"Phone":List_array[1],"Name":List_array[2]} 
1

这应该为你工作:

f = open('filename.txt').readlines() 

f = [i.strip('\n').split() for i in f] 

new_dict = {i[0]:{i[b]:i[b+1] for b in range(1, len(i), 2) if b+1 < len(i)} for i in f} 

print new_dict