93 votes

Convertir une chaîne en une liste de mots ?

J'essaie de convertir une chaîne en une liste de mots en utilisant python. Je veux prendre quelque chose comme ceci :

 string = 'This is a string, with words!'

Convertissez ensuite en quelque chose comme ceci :

 list = ['This', 'is', 'a', 'string', 'with', 'words']

Notez l'omission de la ponctuation et des espaces. Quel serait le moyen le plus rapide de procéder?

108voto

gilgamar Points 1001

Je pense que c'est le moyen le plus simple pour quiconque tombe sur ce post compte tenu de la réponse tardive:

 >>> string = 'This is a string, with words!'
>>> string.split()
['This', 'is', 'a', 'string,', 'with', 'words!']

38voto

Tim McNamara Points 6478

Le faire correctement est assez complexe. Pour vos recherches, il s'agit de la tokenisation des mots. Vous devriez regarder NLTK si vous voulez voir ce que les autres ont fait, plutôt que de repartir de zéro :

 >>> import nltk
>>> paragraph = u"Hi, this is my first sentence. And this is my second."
>>> sentences = nltk.sent_tokenize(paragraph)
>>> for sentence in sentences:
...     nltk.word_tokenize(sentence)
[u'Hi', u',', u'this', u'is', u'my', u'first', u'sentence', u'.']
[u'And', u'this', u'is', u'my', u'second', u'.']

21voto

JBernardo Points 14772

Le moyen le plus simple :

 >>> import re
>>> string = 'This is a string, with words!'
>>> re.findall(r'\w+', string)
['This', 'is', 'a', 'string', 'with', 'words']

15voto

mtrw Points 10098

Utilisation de string.punctuation pour l'exhaustivité :

 import re
import string
x = re.sub('['+string.punctuation+']', '', s).split()

Cela gère également les nouvelles lignes.

Prograide.com

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.

Powered by:

X