我正在尝试阅读基于txt的网站,它只读取奇数行

时间:2016-06-04 04:29:47

标签: python list readline

import urllib.request
mypage=urllib.request.urlopen("http://cryptocode.net/cs8/cities.txt")
def makelist(URL):
    list1=[]
    for line in mypage:
        s=mypage.readline()

我想将网站上的数据转换为列表。当我输入for line in mypage: print(line)时,它会全部打印出来,但是当我尝试读取它时,它只会读取所有其他行。

1 个答案:

答案 0 :(得分:4)

这里的问题是,当您使用for循环迭代mypage时,实际上是在阅读它两次。假设您有一个包含此文本的网页:

Hello
you
Hello
will
Hello
only
Hello
read
Hello
this

当你阅读时:

for line in mypage:
    s=mypage.readline()

s将包含you will only read this。这是因为,当你使用for line in mypage进行迭代时,就像说line = mypage.readline()(因此,你只得到偶数行)。因此,更正后的代码应为:

for line in mypage:
    s = line

修改

您必须将所有数据存储到list(我强烈建议您使用不同的变量名称,因为list是一种类型),使用元组在for循环之外声明。然后,您可以使用方法.sort()sorted()按字母顺序对其进行排序:

        # ...
        finallist.append(cities)
        finallist.append(temp)
        finallist.append(populationAmount)
        # Add this instead of the print statement
        list.append((finallist[0], finallist[1], finallist[2]))
    for s in sorted(list):
        print(s[0] + ",", s[1] + " ", s[2] + " ")