49

HTML から数値を抽出する単純な正規表現を Python で作成したいと考えています。HTML サンプルは次のとおりです。

Your number is <b>123</b>

では、「123」、つまり文字列「Your number is」の後の最初の太字テキストの内容を抽出するにはどうすればよいでしょうか。

4

10 に答える 10

63
import re
m = re.search("Your number is <b>(\d+)</b>",
      "xxx Your number is <b>123</b>  fdjsk")
if m:
    print m.groups()[0]
于 2012-06-23T16:18:38.393 に答える
24

次に与えられるs = "Your number is <b>123</b>"

 import re 
 m = re.search(r"\d+", s)

働き、あなたに与えます

 m.group()
'123'

正規表現は、文字列内で 1 つ以上の連続する数字を探します。

この特定のケースでは、数値シーケンスがあることがわかっていることに注意してください。それ以外の場合は、の戻り値をテストして、有効な参照が含まre.search()れていることを確認する必要があります。そうでない場合、例外が発生します。mm.group()AttributeError:

もちろん、大量の HTML を処理する予定がある場合は、BeautifulSoupを真剣に検討する必要があります。BeautifulSoup の全体的な考え方は、文字列操作または正規表現を使用した「手動」の解析を避けることです。

于 2012-06-23T16:15:11.373 に答える
11
import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)

これは、「あなたの番号は」文字列に続く番号を検索します

于 2012-06-23T16:20:55.943 に答える
5
import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
于 2014-02-17T19:20:11.170 に答える
4

最も簡単な方法は、数字(数字)を抽出することです

re.search(r"\d+",text)
于 2016-06-22T10:45:26.773 に答える
2
val="Your number is <b>123</b>"

オプション1

m=re.search(r'(<.*?>)(\d+)(<.*?>)',val)

m.group(2)

オプション: 2

re.sub(r'([\s\S]+)(<.*?>)(\d+)(<.*?>)',r'\3',val)
于 2015-07-07T11:55:00.543 に答える
0

次の例を使用して問題を解決できます。

import re

search = re.search(r"\d+",text).group(0) #returns the number that is matched in the text

print("Starting Index Of Digit", search.start())

print("Ending Index Of Digit:", search.end())
于 2018-10-03T21:03:20.283 に答える