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)
时,它会全部打印出来,但是当我尝试读取它时,它只会读取所有其他行。
答案 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] + " ")