-2

我从 youtube 视频中复制了一个 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 ,那么使用字符串而不是像对象这样的字节时会出现错误

4

1 回答 1

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.


因此,与其依赖于在 中存在一定数量的元素的任意假设findheadings,在 Python 中使用它更为惯用

for heading in findheadings

迭代 的元素findheadingsheading将在findheadings每次通过循环时分配给一个值。


要同时遍历findheadingand findlink,请使用zip

for heading, link in zip(findheading, findlink):
    print(heading)
    print(link) 

请注意,如果其中有不同数量的元素,则当两者中较短的一个中没有更多元素时findheadingfindlinkthen将停止。如果要迭代直到两者都用尽,zip请使用itertools.zip_longest 。

于 2013-10-26T10:15:06.967 回答