3

クレイグリストのRSSフィードを解析して位置情報を抽出しようとしています。

私はfeedparserを使用して、スクリプトをエントリとエントリの説明に解析しました。残念ながら、アドレス情報は説明セクション内の不規則なタグに含まれています。

アドレスは、次のようなセクションに含まれています。

<!-- CLTAG xstreet0=11832 se 318pl  -->
<!-- CLTAG xstreet1= -->
<!-- CLTAG city=auburn -->
<!-- CLTAG region=wa -->
11832 se 318pl 

FeedparserはそれらのCLTAGを好みません。正規表現で最初の行をキャプチャする試みは、次のようになりました。

addressStart = r'!-- CLTAG xstreet0='
addressEnd = r'-->'

prog = re.compile(addressStart(.*?)addressEnd)
result = prog.match(string)

...しかし、それはうまくいきませんでした。私は何が間違っているのですか?これが私が使用しているrssフィードへのリンクです'http://seattle.craigslist.org/see/apa/index.rss'

どんな助けでも大歓迎です!

4

2 に答える 2

2

これは無効な構文です。文字列が引用符で囲まれていない限り、文字列を連結/フォーマットすることはできません。試す:

addressStart = r'!-- CLTAG xstreet0='
addressEnd = r'-->'

prog = re.compile(addressStart + r'(.*?)' + addressEnd)
result = prog.match(string)
于 2011-09-08T05:04:07.400 に答える
2

search代わりに試してくださいmatch(理由は、行がで始まるが、で始まるように<定義したためです。 文字列内の任意の場所で一致が見つかりますが、先頭でのみ一致が見つかります。または、先頭を含むように再定義することもできます。)addressStart!searchmatchaddressStart<

>>> import re;
>>> addressStart = r'!-- CLTAG xstreet0='
>>> addressEnd = r'-->'
>>> prog = re.compile(addressStart + "(.*?)" + addressEnd)
>>> string = "<!-- CLTAG xstreet0=11832 se 318pl  -->"
>>> result = re.search(prog, string)
>>> result
<_sre.SRE_Match object at 0x1004806c0>
>>> result.group(1)
'11832 se 318pl  '
于 2011-09-08T05:10:11.770 に答える