将多个单词的列表转换为单个单词的Python函数

4
我有一个单词列表,例如:
words = ['one','two','three four','five','six seven']
我想创建一个新的列表,其中列表中的每个项只是一个单词,如下所示:
words = ['one','two','three','four','five','six','seven']
最好的做法是将整个列表连接成一个字符串,然后对字符串进行分词吗?像这样:
word_string = ' '.join(words) tokenize_list = nltk.tokenize(word_string)
还是有更好的选择?

4
' '.join(words).split(' ') 这段代码有什么问题吗? - EdChum
1
@EdChum,我认为这是一个非常好的答案。 - Joran Beasley
我能想到的另一种解决方案是将每个项分词并将结果拼接在一起。但我认为你的解决方案更好。 - qwattash
3个回答

10
words = ['one','two','three four','five','six seven']

使用循环:

words_result = []
for item in words:
    for word in item.split():
        words_result.append(word)

或者使用推导式:

words = [word for item in words for word in item.split()]

你说得很对:在我的版本中,“word”可能实际上并不是一个单词。我会进行更改。 - TigerhawkT3

9
你可以使用空格分隔符加入,然后再次拆分:
In [22]:

words = ['one','two','three four','five','six seven']
' '.join(words).split()
Out[22]:
['one', 'two', 'three', 'four', 'five', 'six', 'seven']

这看起来很棒,是个不错的解决方案! - GNMO11
2
微不足道的建议:您可以使用没有参数的split()来节省三个字符。 - TigerhawkT3
1
@TigerhawkT3 嗯,我以为我试过了但失败了,但实际上它确实可以工作,谢谢更新。 - EdChum

1
这里有一个稍微使用正则表达式的解决方案:
import re

words = ['one','two','three four','five','six seven']
result = re.findall(r'[a-zA-Z]+', str(words))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接