2013-03-17 83 views
0

我试图将两个文件合并成一个字典。他们都是文本文件。Python-从多个文本文件读入字典

第一个文件具有状态首字母和数字。它看起来像这样:

AL 4447100 
AK 626932 
AZ 5130632 
AR 2673400 
CA 33871648 
CO 4301261 
... 

第二个文件的状态为初始和国家名(每行这一次,不是并排):

AL 
Alabama 
AK 
Alaska 
AZ 
Arizona 
AR 
Arkansas 
CA 
California 
CO 
Colorado 
... 

我试图创建一个字典,看起来像这样

{'Alabama': 4447100, 'Alaska': 626932, ...} 

现在,我无法阅读第一个文本文件。如何在缩写成为问题时读取数字?

第二个文本文件比较容易,因为我可以读取其他所有行。

有什么建议吗?

+0

你确定只想读取数字,只读完整的州名吗?你不需要将一个文件中的缩写与另一个文件中的缩写链接起来吗? – Marius 2013-03-17 03:17:31

+0

这是功课吗? – jamylak 2013-03-17 03:17:47

+0

@jamylak不,这不是硬件,即时尝试创建基于此的信息图形。这只是开始。 – carte 2013-03-17 03:27:39

回答

1

您可以根据您如何在读取数据使用split

例如:

>>> myStr = 'AL 4447100' 
>>> myStr.split(' ') 
>>> ['AL', '447100'] 
+0

谢谢,这工作。 – carte 2013-03-17 03:28:43

+0

不客气。 – Forrest 2013-03-17 03:32:42

0

我不会给一个完整的解决方案,因为这可能是作业,但你最后一个应该有这样的代码

d = {} 

with open('file1.txt') as f: 
    for line in f: 
     state, pop = line.split() 
     d[states[state]] = int(pop) # states is a dictionary with initials as 
            # the keys and full names as values 
0

问)现在,我无法阅读第一个文本文件。如何在缩写成为问题时读取数字?

A)可以使用此与各行的字符串剥离从字符串中的第3个字符(缩写和空格):

number = lineString[3:] 
0

假设你有文件states.txtpop.txt

with open("states.txt") as f1: 
    x= f1.read().split() 
    states = {state:abrv for state,abrv in zip(x[0::2],x[1::2])} 

with open("pop.txt") as f2: 
    y= f2.read().split() 
    pop = {states[abrv]:val for abrv,val in zip(y[0::2],y[1::2])}