re à partir d'un tuple ?

Le
Pierre Maurette
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre
de split paramétré par une liste de séparateurs mis en OU ?

Merci, bonne soirée,

--
Pierre Maurette
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Méta-MCI \(MVP\)
Le #1157590
Bonsoir !

Et, tout simplement :
operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(operators) + ']*'

ça n'irait pas ?

@+
--
MCI
Pierre Maurette
Le #1158711
Bonsoir !

Et, tout simplement :
operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(operators) + ']*'

ça n'irait pas ?


Ooops, je ne sais pas comment j'en étais arrivé à cette incongruité.
Merci. Bon, ça laisse quand la question ouverte.

--
Pierre Maurette

Bruno Desthuilliers
Le #1159246
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre
de split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]

Pierre Maurette
Le #1159245
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un genre de
split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]


Je ne saisis pas, désolé. Je peux effectivement faire:

print re.split(re.compile(pattern1), test.strip())[1:]

mais je ne vois pas trop la différence...

--
Pierre Maurette


Guillaume
Le #1159795
Bon, ok ------------>[]


Je ne saisis pas, désolé.


->[]
Raccourci "usuel" désignant une personne prenant la porte, voulant dire
"ok j'ai sorti ma bétise, maintenant je me punis et je sors"

Bref, c'était une blague. Pourrie ou non, à chacun sa propre appréciation ;)

--
Guillaume


Franssoa
Le #1160342
Je ne saisis pas, désolé. Je peux effectivement faire:
print re.split(re.compile(pattern1), test.strip())[1:]
mais je ne vois pas trop la différence...

Je sais que je ne répond pas à la question, mais dans ce cas précis,

est-ce que le fait d'avoir des opérateurs valide est important ?
Si non, un simple re.findall() peut-il faire ton affaire ?

test = ' (mrcontentcoluum - mrsidebar) + 10px '
re.findall("w+",test)
['mrcontentcoluum', 'mrsidebar', '10px']




--
Franssoa



Bruno Desthuilliers
Le #1161464
Bonjour,

Je me demande s'il existe un moyen d'utiliser directement un tuple de
caractères pour définir un pattern de re. Voici ce que je fais pour
l'instant:

operators = ('*', '+', '-', '/', '(', ')')
pattern1 = r'[s' + '\'.join(z for z in operators) + ']*'
test = ' (mrcontentcoluum - mrsidebar) + 10px '
print re.compile(pattern1).split(test.strip())[1:]

Je veux obtenir (et j'obtiens):

['mrcontentcoluum', 'mrsidebar', '10px']

Accessoirement, y aurait-il une solution sans re, c'est à dire un
genre de split paramétré par une liste de séparateurs mis en OU ?


Heu... re.split() ?

Bon, ok ------------>[]


Je ne saisis pas, désolé.


C'était une bêtise (du vendredi). La solution habituelle pour "un
genre de split paramétré par une liste de séparateurs mis en OU", c'est
précisément re.split().



Publicité
Poster une réponse
Anonyme