我有一个来自youtube视频的copypasta&python代码,它基本上允许我从RSS提要中提取标题和链接。
import urllib.request
import re
webpage= urllib.request.urlopen("http://feeds.feedburner.com/JohnnyWebber?format=xml").read()
heading = re.compile(b'<title>(.*)</title>')
link = re.compile(b'<link>(.*)</link>')
findheading= re.findall(heading,webpage)
findlink = re.findall (link,webpage)
lists=[]
lists[:]=range(2,16)
for i in lists:
print (findheading[i])
print (findlink[i])
print ("\n")
我在
中收到错误 print (findheading[i])
编辑:
另一个问题,在按照unutbu的回答后,我已经能够得到输出但是就像
b'HEADING'
b'TITLE'
但是如果我从正则表达式中删除b,那么我使用字符串而不是像对象这样的字节会出错
答案 0 :(得分:3)
lists[:]=range(2,16)
创建一个从2到15的数字列表:
In [11]: range(2, 16)
Out[11]: [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
错误意味着findheadings
中的元素少于16个。
因此,不依赖于findheadings
中有一定数量元素的任意假设,在Python中使用
for heading in findheadings
迭代findheadings
的元素。 heading
会
每次通过循环时,都会被分配到findheadings
中的值。
要循环findheading
和findlink
,请使用zip:
for heading, link in zip(findheading, findlink):
print(heading)
print(link)
请注意,如果findheading
和findlink
中的元素数量不同,那么当{2}中较短的元素中没有其他元素时,zip
将会停止。如果要迭代直到两者都用尽,请使用itertools.zip_longest。