Ich möchte einen einfachen regulären Ausdruck in Python schreiben, der eine Zahl aus HTML extrahiert. Das HTML-Beispiel lautet wie folgt:
Your number is <b>123</b>
Wie kann ich nun "123" extrahieren, d. H. Den Inhalt des ersten fetten Textes nach dem Text "Ihre Nummer ist"?
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]
Dann s = "Your number is <b>123</b>"
gegeben:
import re
m = re.search(r"\d+", s)
werde arbeiten und dir geben
m.group()
'123'
Der reguläre Ausdruck sucht nach einer oder mehreren aufeinander folgenden Ziffern in Ihrer Zeichenfolge.
Beachten Sie, dass in diesem speziellen Fall wusste dass es eine numerische Sequenz geben würde, andernfalls müssten Sie den Rückgabewert von re.search()
testen, um sicherzustellen, dass m
eine gültige Referenz enthält. Andernfalls würde m.group()
einen AttributeError:
ergeben. Ausnahme.
Wenn Sie eine Menge HTML-Code verarbeiten, möchten Sie natürlich BeautifulSoup ernsthaft betrachten - es ist dafür und noch viel mehr gedacht. Die Grundidee von BeautifulSoup ist es, das manuelle Parsen mit String-Ops oder regulären Ausdrücken zu vermeiden.
import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)
dadurch wird nach der Nummer gesucht, die auf die Zeichenfolge "Ihre Nummer ist" folgt
import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
Der einfachste Weg ist nur die Ziffer (Ziffer) zu extrahieren.
re.search(r"\d+",text)
import re
found = re.search("your number is <b>(\d+)</b>", "something.... Your number is <b>123</b> something...")
if found:
print found.group()[0]
Hier (\ d +) ist die Gruppierung, da nur eine Gruppe [0]
verwendet wird. Bei mehreren Gruppierungen sollte [grouping index]
verwendet werden.
val="Your number is <b>123</b>"
m=re.search(r'(<.*?>)(\d+)(<.*?>)',val)
m.group(2)
re.sub(r'([\s\S]+)(<.*?>)(\d+)(<.*?>)',r'\3',val)
Sie können das folgende Beispiel verwenden, um Ihr Problem zu lösen:
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())