Je veux écrire une expression régulière simple en Python qui extrait un nombre à partir de HTML. L'exemple HTML est le suivant:
Your number is <b>123</b>
Maintenant, comment puis-je extraire "123", c’est-à-dire le contenu du premier texte en gras après la chaîne "Votre numéro est"?
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]
Étant donné s = "Your number is <b>123</b>"
alors:
import re
m = re.search(r"\d+", s)
va travailler et vous donner
m.group()
'123'
L'expression régulière recherche 1 ou plusieurs chiffres consécutifs dans votre chaîne.
Notez que dans ce cas particulier, nous {savions qu'il y aurait une séquence numérique, sinon vous devriez tester la valeur de retour de re.search()
pour vous assurer que m
contient une référence valide, sinon m.group()
donnerait un AttributeError:
exception.
Bien sûr, si vous allez traiter beaucoup de HTML, vous voulez examiner sérieusement BeautifulSoup - il est fait pour cela et bien plus encore. L’idée principale de BeautifulSoup est d’éviter une analyse "manuelle" à l’aide d’opérateurs de chaîne ou de expressions régulières .
import re
x = 'Your number is <b>123</b>'
re.search('(?<=Your number is )<b>(\d+)</b>',x).group(0)
ceci recherche le numéro qui suit la chaîne "Votre numéro est"
import re
print re.search(r'(\d+)', 'Your number is <b>123</b>').group(0)
Le plus simple est d'extraire un chiffre (nombre)
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]
Ici (\ d +) est le groupement, puisqu'il n'y a qu'un seul groupe [0]
utilisé. Quand il y a plusieurs groupements, [grouping index]
doit être utilisé.
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)
Vous pouvez utiliser l'exemple suivant pour résoudre votre problème:
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())