用python分隔逗号

2024-05-19 21:37:49 发布

您现在位置: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

我怎样才能做到这一点?你知道吗


Tags: testtxtfordataopen国家file人口
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()

缩进您的两个print调用,使它们位于最里面的循环中,与分配它们的行处于相同的嵌套级别。当前,您让最内部的循环运行到底,一遍又一遍地分配和重新分配CountryPopulation,但只有在的末尾才打印它们的值。你知道吗

然后,开始修剪循环结构。您只需要一个循环,而不需要两个嵌套的循环。只需打开一次文件并读取一次数据。你知道吗

可以看出,您正在一次又一次地循环相同的值,对于从单个值读取数据,您不需要嵌套的循环,一个循环应该足以得到您真正想要的,也许像这样

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)

在你的代码国家,人口只是两个变量,不管你的for循环迭代多少次,他们最终只会存储最后初始化的值。你知道吗

相关问题 更多 >