0

タイトルで申し訳ありませんが、これを適切に尋ねる方法がわかりません。

repython2.7 のライブラリを使用して解析したい HTML ファイルがあります。解析には BeautifulSoup などを使用する必要があることはわかっていますが、ここではあまり重要ではありません。

この HTML ファイルには次の部分があります: <br>(40%)</TD>. この例では、番号 (ここでは40) が時々変わります。

この数値を変数として使いたい。それを成し遂げるために、私は前のすべてと次のre.split()すべてを分割するために使用しています:4040

html = getHtmlTextFromWebsite()
very_important_number = int(re.split("%\)</TD>", (re.split("<br>\(", html))[1])[0])

これを行うには非常に面倒な方法だと思います。より良い方法があるかどうか疑問に思っています。

4

4 に答える 4

2

番号だけが必要な場合は、代わりにmatch (最初の一致) または finditer (すべての一致) 関数を使用する必要があります。

import re
p = re.compile("<br>\((\d+%)\)<\/TD>", re.IGNORECASE)
for m in p.finditer(html_code):
    print m.start(), m.group()

また、見つかった各数値の位置も表示されます。

于 2013-10-28T11:20:44.500 に答える
1

どうですか

r = re.compile(r'<br>\((\d+)%\)</TD>', re.I)
m = r.search(text)
print m.group(1)

ここでは、テキスト全体でこの正確なパターンを検索し、その「環境」(一致) とともに取得できます。一致から、グループ #1 (()囲まれた部分) を抽出します。

コンパイルされた re object なしで検索することもできます:

m = re.search(r'<br>\((\d+)%\)</TD>', text, re.I)
print m.group(1)
于 2013-10-28T11:26:08.397 に答える
1

あなたはこれを試すことができます

import re
html = getHtmlTextFromWebsite()
number = re.findall(r'<br>(.*?)%</br>', html)

番号を印刷するには:

print number[0]

40サンプルテキストで印刷されます。

于 2013-10-28T11:41:32.780 に答える