u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Tout ce dont j'ai besoin est le contenu à l'intérieur de la parenthèse.
u'abcde(date=\'2/xc2/xb2\',time=\'/case/test.png\')'
Tout ce dont j'ai besoin est le contenu à l'intérieur de la parenthèse.
Voici plusieurs façons d'extraire des chaînes de caractères entre parenthèses dans Pandas avec la fonction \(([^()]+)\)
regex (voir sa démo en ligne ) qui correspond à
\(
- a (
char([^()]+)
- puis saisit dans le Groupe 1 un ou plusieurs caractères autres que (
y )
\)
- a )
char.Extraction de la première occurrence en utilisant Series.str.extract
:
import pandas as pd
df = pd.DataFrame({'Description':['some text (value 1) and (value 2)']})
df['Values'] = df['Description'].str.extract(r'\(([^()]+)\)')
# => df['Values']
# 0 value 1
# Name: Values, dtype: object
Extraire (trouver) toutes les occurrences en utilisant Series.str.findall
:
import pandas as pd
df = pd.DataFrame({'Description':['some text (value 1) and (value 2)']})
df['Values'] = df['Description'].str.findall(r'\(([^()]+)\)')
# => df['Values']
# 0 [value 1, value 2]
# Name: Values, dtype: object
df['Values'] = df['Description'].str.findall(r'\(([^()]+)\)').str.join(', ')
# => df['Values']
# 0 value 1, value 2
# Name: Values, dtype: object
Notez que .str.join(', ')
est utilisé pour créer une chaîne séparée par des virgules à partir de la liste de chaînes obtenue. Vous pouvez ajuster ce séparateur en fonction de votre scénario.
La réponse de TheSoulkiller est excellente. Dans mon cas, j'avais besoin de gérer les parenthèses supplémentaires et d'extraire uniquement le mot à l'intérieur des parenthèses. Une toute petite modification résoudrait le problème
>>> s=u'abcde((((a+b))))-((a*b))'
>>> re.findall('\((.*?)\)',s)
['(((a+b', '(a*b']
>>> re.findall('\(+(.*?)\)',s)
['a+b', 'a*b']
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
Des supports ? Je ne vois pas de parenthèses. Tu veux dire des parenthèses ?
5 votes
Pourquoi ne pas utiliser des guillemets ? Cela rendrait la chaîne plus facile à lire, par exemple
u"abcde(date='2/xc2/xb2',time='/case/test.png')"
1 votes
Cette question me rend nerveux rien qu'en la regardant. Je soupçonne furtivement qu'OP vraiment veut la fonctionnalité dans
ast
et ne sait pas qu'il existe.