Je suis assez nouveau à Python et je ne trouve pas tout à fait de trouver le libellé de la comprendre via le googling ou de la recherche ici. Je tente d'écrire une ligne de code dans Python pour extraire un certain nombre d'une ligne de sujet de messagerie. Je lis les données du courrier électronique dans un fichier de données PANDA (colonnes séparées par sujet, destinataire, expéditeur, etc.). Le nombre sera toujours dans la même position mais variera de longueur (minimalement 4, maximum 9).
Par exemple: P>
import re regexpression= re.search('Manager: (.*) -', df.subject[0]) result = regexpression.group(1).rsplit(' ', 1)[1] print (f'{result}')
5 Réponses :
stringlist = string.split('-') affectedlist = stringlist[-4].split() anydigitnumber = affectedlist[-1] print (anydigitnumber) #012345
Utilisez L'utilisation de -1 provient de l'hypothèse qu'il est toujours dans la même position p> si vous Voulez-vous que le premier zéro, une chaîne fera: p>
Cela semble fonctionner comme prévu. Bien que si j'ai un numéro qui mène avec un zéro, cela le tombe. J'aurais besoin du zéro.
import re x= 'No, I will submit changes: Action Required: RIC CR 2.6.7.1-5 - Active Confirmation - Affected: Doe, John 012345 - Date Sent: 01-02-2019' numbers=re.findall("(.*?)-",x) for i in range(len(numbers[3])): if numbers[3][i].isdigit() is True: print (numbers[3][i:]) break if the pattern is consistent with the example you provided (searching for "-" to split the text then search for you numbers)
Vous pouvez séparer par un tiret entouré par des espaces (par opposition à juste un tableau de bord), puis il est plus facile de localiser ce que vous recherchez, à savoir le dernier "mot" du premier "élément" du premier "élément" :
number = int(affected.split()[-1])
>>> import re >>> s="""Email Subject Line: 'No, I will submit changes: Action Required: RIC ... CR 2.6.7.1-5 - Active Confirmation - Affected: Doe, John 012345 - Date ... Sent: 01-02-2019'""" >>> m=re.search(r'\b[0-9]{4,9}\b',s) >>> m.group(0) '012345' use \b for word boundaries to avoid matching something by accident
Avez-vous essayé d'utiliser Expressions régulières ?
Je me demande si la scission de la fin pourrait fonctionner pour vous:
your_string.rsplit ('-', 2) [- 2] .Rpartition ('') [2] code> ... ce qui pourrait mapper à quelque chose comme :
DF ['Sujet']. str.rsplit ('-', 2, expand = true) [1] .str.rpartition ('') [2] code> Pour appliquer à votre colonne Dataframe. ..