2013-03-17 79 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])}