2017-05-12 58 views
2

我想我的單詞表分離的一個學校項目單獨逗號, 名單是國家:人口與Python

China:1382323332 
India:1326801576 
USA:324118787 
Indonesia:260581100 

等等...

我已經這樣做了代碼的警告凌亂並有一些重複:

Data = open("CountryList.txt","r") 
DATA = Data.readlines() 
file = "CountryList.txt" 
Test = open(file,'r') 
for x in range(0,len(DATA)): 
    for lines in Test.readlines(): 
     Country,Population = lines.split(':') 
print(Country) 
print(Population) 

結果是:

Egypt 
93383574 
Egypt 
93383574 
Egypt 
93383574 

的13倍以上

我想這使該國的國家列表和人口在人口名單,因此結果將是

USA 
324118787 
China 
1382323332 

我怎樣才能做到這一點? 謝謝。

回答

3

您需要打印語句是在for循環體。你也做得太多了。請參閱精簡代碼。

with open("CountryList.txt","r") as fin: 
    for line in fin: 
     Country,Population = line.split(':') 
     print(Country) 
     print(Population) 

正如你可以從上面看到:您可以直接在文件迭代,而無需使用.readlines()

還要注意的是with語句自動關閉該文件,因此你不需要fin.close()

1

縮進你的兩個print電話讓他們你內心的循環(一個或多個),在嵌套的同一水平作爲他們被分配的線路。目前,你讓內部循環運行到結束,分配和重新分配遍地CountryPopulation,但並只在最後你打印他們的價值觀。

然後,着手修剪你的循環結構。你只需要一個循環,而不是兩個嵌套的循環。您只需打開一次文件並讀取一次數據。

0

,因爲它可以看到你一次又一次地遍歷相同的值,並從一個你不需要嵌套循環讀取數據,一個循環應該足以讓你真正想要的東西,也許是這樣的,

country = [] 
population = [] 
with open("lolla.txt", 'r') as fp: 
    for line in fp.readlines(): 
     c, p = line.split(':') 
     country.append(c) 
     population.append(p) 

print country 
print population 

print zip(country, population) 

,並在代碼中國家,人口只有兩個變量,不管有多少次你的循環可能重複他們最終將只存儲的最後一個初始化值。