Amélioration d'un "split" un peu évolué
Bonjour,
désolé pour ce titre.
Voici mon problème : je voudrais éclater la chaîne
"Un premier test : ¨mefs et ¨mef.Encore des ¨mefs..."
sous la forme
["Un premier test : ", "¨mefs", " et ", "¨mef", ".Encore des ", "¨mefs", "..."].
J'ai fait le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #! /usr/bin/env python3
import re
PATTERN = re.compile("¨\w+")
def splitForReplace(text):
textSplitted = []
for onePieceWithNoAbrev in PATTERN.split(text):
start = text.find(onePieceWithNoAbrev)
end = start + len(onePieceWithNoAbrev)
before = text[:start] # One possible abreviation.
if before:
textSplitted.append(before)
textSplitted.append(text[start:end])
text = text[end:]
if text:
textSplitted.append(text)
return textSplitted
if __name__ == '__main__':
tests = [
'Circulez, y a rien à voir !',
'Un premier test : ¨mefs et ¨mef.Encore des ¨mefs...',
'Un autre test :¨mef,¨Mef, ¨MEF, ¨MeF...',
]
for oneTest in tests:
print( '---',
oneTest.strip(),
splitForReplace(oneTest),
sep = '\n' ) |
Ce code renvoie :
Code:
1 2 3 4 5 6 7 8 9
| ---
Circulez, y a rien à voir !
['Circulez, y a rien à voir !']
---
Un premier test : ¨mefs et ¨mef.Encore des ¨mefs...
['Un premier test : ', '¨mefs', ' et ', '¨mef', '.Encore des ', '¨mefs', '...']
---
Un autre test :¨mef,¨Mef, ¨MEF, ¨MeF...
['Un autre test :', '¨mef', ',', '¨Mef', ', ', '¨MEF', ', ', '¨MeF', '...'] |
Tout ceci me permet de repérer les séquences ¨word pour faire des remplacements au cas par cas. Peut-être que les regex permettent directement cela...
Avez-vous d'autres méthodes à proposer ?