web-dev-qa-db-fra.com

Fractionnement de ponctuation regex [Python]

Quelqu'un peut-il m'aider un peu avec les expressions rationnelles? J'ai actuellement ceci: re.split(" +", line.rstrip()), qui se sépare par des espaces.

Comment pourrais-je l'étendre pour couvrir la ponctuation aussi?

23
dantdj

La documentation officielle Python a un bon exemple pour celui-ci. Elle se divisera sur tous les caractères non alphanumériques (espaces et ponctuation). Littéralement\W est la classe de caractères pour tous les caractères non Word. Remarque: le trait de soulignement "_" est considéré comme un caractère "Word" et ne fera pas partie du fractionnement ici.

re.split('\W+', 'Words, words, words.')

Voir https://docs.python.org/3/library/re.html pour plus d'exemples, recherchez la page "re.split"

35
Mister_Tom

En utilisant string.punctuation et classe de caractères:

>>> from string import punctuation
>>> r = re.compile(r'[\s{}]+'.format(re.escape(punctuation)))
>>> r.split('dss!dfs^  #$% jjj^')
['dss', 'dfs', 'jjj', '']
18
Ashwini Chaudhary
import re
st='one two,three; four-five,    six'

print re.split(r'\s+|[,;.-]\s*', st)
# ['one', 'two', 'three', 'four', 'five', 'six']
3
dawg