Je ne veux pas utiliser String Split car j'ai des chiffres 1-99 et une colonne de chaîne contenant '# / #' quelque part dans le texte.
Comment puis-je écrire une regex pour extraire le numéro 10 dans l'exemple suivant: p>
5 Réponses :
Utilisez un lookahead pour correspondre sur le / code>, comme celui-ci: \d+(?=/)
Vous pouvez toujours utiliser sortie: p> str.split () code> si vous construisez soigneusement la logique autour de celui-ci:
Cela suppose qu'il n'y a pas d'autre / code> sans chiffres. Par exemple, sur "Il / elle a eu 10/19 questions". ", Ça échouera.
@Jos, vous aurez le vôtre si vous le donnez le 05/05/2019, quelqu'un va marquer 9/8 points. Code> Mais au moins le vôtre ne tira que des nombres qui sont suivis par / code> . Ajout de plus de logique - devrait le réparer.
res = re.search('(\d+)/\d+', r'He got 10/19 questions right.')
res.groups()
('10',)
import re
myString = "He got 10/19 questions right."
oldnumber = re.findall('[0-9]+/', myString) #find one or more digits followed by a slash.
newNumber = oldnumber[0].replace("/","") #get rid of the slash.
print(newNumber)
>>>10
Recherchez tous les numéros avant la barre avant et excluez la barre oblique en utilisant des parenthèses de démarrage.
>>> intNumber = list(map(int, stringNumber)) >>> intNumber [10]
Essayez \ d + (? = \ / \ d +) Demo