-2

私は、基本的に RSS フィードからタイトルとリンクを抽出できるようにする必要がある YouTube ビデオから Python コードをコピーしました。

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]

このエラーは、 の要素が 16 未満であることを示していますfindheadings


そのため、 に特定の数の要素があるという恣意的な仮定に頼る代わりにfindheadings、Python では、より慣用的に使用します。

for heading in findheadings

の要素を反復処理しfindheadingsます。ループを通過するたびheadingに値が割り当てられます。findheadings


findheadingとの両方をループするには、 zipfindlinkを使用します。

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

findheadingfindlinkに異なる数の要素があるzip場合、2 つのうち短い方に要素がなくなると停止することに注意してください。両方が尽きるまで繰り返したい場合は、itertools.zip_longestを使用してください。

于 2013-10-26T10:15:06.967 に答える