J'écris une fonction Python pour diviser le texte en mots, en ignorant la ponctuation spécifiée. Voici un code de travail. Je ne suis pas convaincu que la construction de chaînes à partir de listes (buf = [] dans le code) est efficace. Quelqu'un at-il une suggestion pour une meilleure façon de faire cela?Un moyen efficace d'ajouter itérativement à une chaîne en Python?
def getwords(text, splitchars=' \t|!?.;:"'):
"""
Generator to get words in text by splitting text along specified splitchars
and stripping out the splitchars::
>>> list(getwords('this is some text.'))
['this', 'is', 'some', 'text']
>>> list(getwords('and/or'))
['and', 'or']
>>> list(getwords('one||two'))
['one', 'two']
>>> list(getwords(u'hola unicode!'))
[u'hola', u'unicode']
"""
splitchars = set(splitchars)
buf = []
for char in text:
if char not in splitchars:
buf.append(char)
else:
if buf:
yield ''.join(buf)
buf = []
# All done. Yield last word.
if buf:
yield ''.join(buf)
Dommage ... Donc, il y avait quelqu'un ici, qui a mis la meilleure réponse, en disant que le haut-scission a permis de mettre plus d'un splitChars. Vous avez dit que son code était moche, il a supprimé son message. – fulmicoton