2011-12-12 5 views
4

Je suis en train de prendre essentiellement une liste de chaînes containg phrases telles que:Convertir une liste de phrases de chaîne aux mots

sentence = ['Here is an example of what I am working with', 'But I need to change the format', 'to something more useable'] 

et le convertir dans les éléments suivants:

word_list = ['Here', 'is', 'an', 'example', 'of', 'what', 'I', 'am', 
'working', 'with', 'But', 'I', 'need', 'to', 'change', 'the format', 
'to', 'something', 'more', 'useable'] 

J'ai essayé en utilisant ceci:

for item in sentence: 
    for word in item: 
     word_list.append(word) 

Je pensais que cela prendrait chaque chaîne et ajoutez chaque élément de cette chaîne à word_list, mais le SORT ut est quelque chose le long des lignes de:

word_list = ['H', 'e', 'r', 'e', ' ', 'i', 's' .....etc] 

Je sais que je fais une erreur stupide, mais je ne peux pas comprendre pourquoi, quelqu'un peut-il aider?

Répondre

11

Vous devez str.split() de diviser chaque chaîne en mots:

word_list = [word for line in sentence for word in line.split()] 
+0

Merci encore, je savais que je manque quelque chose de facile comme ça, très apprécié! –

+0

Cela devrait être '[mot pour ligne dans phrase pour mot dans line.split()]'. –

+1

Upvoted, mais garder dans le mien plus de 2 clauses d'itération est généralement mal vu dans les listes de compréhension. –

8

Juste .split et .join:

word_list = ' '.join(sentence).split(' ') 
2

Vous ne l'ai expliquée comment distinguer un mot. Par défaut, l'itération à travers une chaîne parcourt simplement les caractères.

Vous pouvez utiliser .split(' ') pour diviser une chaîne par des espaces. Donc, cela fonctionnerait:

for item in sentence: 
    for word in item.split(' '): 
     word_list.append(word) 
1
for item in sentence: 
    for word in item.split(): 
     word_list.append(word) 
-1

phrase séparée en mots:

print(sentence.rsplit()) 
Questions connexes