-1
votes

Python Regex pour extraire le nombre de processeurs

J'ai une chaîne qui contient le nombre de processeurs:

sqldb_gp_gen 5 fort> _2 p>

Le nombre est après _gen et avant _ (le nombre 5). Comment puis-je extraire cela à l'aide de python et d'expressions régulières? P>

J'essaie de le faire comme ça, mais ne recevez pas de correspondance: p>

x['SLO'].extract(pat = '(?<=_Gen).*?(?:(?!_).)')


1 commentaires

Vous pouvez utiliser lookaround (? <= _ Gen) [^ _] + (? = _)


3 Réponses :


2
votes

re.match recherche à partir du début de la chaîne. Utilisez re.search à la place et récupérez le premier groupe de capture: xxx


4 commentaires

Vous pouvez améliorer la recherche en recherchant uniquement des numéros au lieu de . *?


Je pense que je préfère '_ gen (\ d +?) _' juste pour être explicite et en vous assurant que nous obtenons au moins 1 chiffre


Merci pour les suggestions, j'étais initialement allé avec le modèle de recherche OP tel qu'il fonctionne aussi


Dans Pandas, il n'est pas nécessaire d'appeler re.search explicitement, il existe des méthodes vectorisées dédiées pour cela.



2
votes

Vous devez utiliser < Code> série.str.Stract avec un motif contenant un groupe de capture: xxx

Pour ne correspond à un numéro, utilisez r'_gen (\ d + ) _ '.

notes :

  • avec série.str.Stract , vous devez utiliser un groupe de capture, la méthode ne renvoie que n'importe quelle valeur si elle est capturée
  • r'_gen (. *?) _ ' correspondra à _gen , puis capturera tous les autres caractères autres que possible les caractères de la pause, puis Match _ . Si vous utilisez \ d + , il ne correspondrai que 1+ chiffres.

1 commentaires

Oui, cela fonctionne. Merci. C'est la meilleure solution utilise des pandas.



0
votes

Utiliser Re:

re.findall(r'Gen(.*)_',text)[0]


0 commentaires