我正在尝试将我的单词列表分开用于学校项目, 列表是国家:人口
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
我怎样才能做到这一点?
答案 0 :(得分:3)
您需要将print语句放在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 :(得分:1)
缩进你的两个print
调用,使它们在最里面的循环中,与它们被分配的行的嵌套级别相同。目前,您让最里面的循环运行到最后,分配并重新分配Country
和Population
一遍又一遍,但仅在结尾您是否打印它们的值。
然后,设置修剪你的循环结构。您只需要一个循环,而不是两个嵌套循环。您只需要打开一次文件并读取一次数据。
答案 2 :(得分: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)
并且在您的代码Country中,Population只是两个变量,无论您的for循环可能迭代多少次,它们最终都只会存储最后初始化的值。