2017-10-17 4 views
1

Je voudrais savoir comment puis-je obtenir à partir d'une chaîne et en utilisant des expressions reg toutes les valeurs jusqu'à la virgule à partir de la fin. Voir exemple ci-dessous, je voudrais obtenir la valeur "CA 0.810" dans une variable:python regex - extraire la valeur de la chaîne

prue ="VA=-0.850,0.800;CA=-0.863,0.800;SP=-0.860,0.810;MO=-0.860,0.810;SUN=MO -0.850,CA 0.810" 

Jusqu'à présent, j'ai le code ci-dessous:

test = re.findall('([0-9]+)$',prue) 
print test 

Cependant, je ne reçois que en dessous de la sortie:

['810'] 

Pourriez-vous s'il vous plaît avis comment puis-je obtenir "CA 0.810" dans la variable test?

+0

Séparer avec une virgule et obtenir le dernier élément. –

+1

Une raison quelconque pour une regex? Pourquoi ne pas simplement 'prue.rpartition (',') [2]'? –

+0

D'accord avec @JonClements Regex ne devrait être utilisé qu'en dernier recours. –

Répondre

0

Vous pouvez le faire en utilisant la méthode split. À partir des documents, il va:

Retourne une liste des mots de la chaîne, en utilisant sep comme chaîne de délimitation.

Donc, si vous pouvez prendre votre string:

prue = "VA=-0.850,0.800;CA=-0.863,0.800;SP=-0.860,0.810;MO=-0.860,0.810;SUN=MO -0.850,CA 0.810" 

vous pouvez faire:

prue.split(",") 

qui retournera un list du stringssplit par le commas:

['VA=-0.850', '0.800;CA=-0.863', '0.800;SP=-0.860', '0.810;MO=-0.860', '0.810;SUN=MO -0.850', 'CA 0.810'] 

Donc, si vous voulez juste la dernière item ('CA 0.8101') dans un variable nommé test, vous pouvez simplement prendre la dernière element du list par indexing avec -1:

test = prue.split(",")[-1] 

test est maintenant: 'CA 0.810'

Espérons que cela aide!