2016-01-22 1 views
1

J'ai une chaîne qui ressemble à ceci:conditionnellement Découpage d'une chaîne en Python

Increase (decrease)  1,334  ( 2,921)  2,797 

Je voudrais diviser la chaîne pour ressembler à ceci:

['Increase (decrease)', '1,334', '(2,921)', '2,797'] 

J'ai essayé:

item=re.split(r'\s{3,}', strg) 

Mais clairement ce rendement:

['Increase (decrease)', '1,334', '(', '2,921)', '2,797'] 

Toute aide serait grandement appréciée.

+0

Essayez 'r \ 's {4,}''? –

+0

Mais pourquoi voulez-vous diviser comme ça? Quelle est la règle? Je n'ai aucune idée de ce que le résultat devrait être par exemple pour 'abc (123) (a a)'. Il suffit d'expliquer la règle –

Répondre

2

Je supprimerait tous les espaces après une parenthèse d'ouverture puis le partage:

>>> re.split(r'\s{3,}', re.sub(r"(?<=\()\s+", "", s)) 
['Increase (decrease)', '1,334', '(2,921)', '2,797'] 

Notez que (?<=\() est un positive lookbehind.

+0

C'est exactement ce que je cherchais. Merci. –

1

Vous pouvez remplacer les espaces entre parenthèses, puis divisée:

>>> re.split(r'\s{3,}',re.sub(r'(?<=\()\s+','',s)) 
['Increase (decrease)', '1,334', '(2,921)', '2,797']