目前我有两个列表,ListofComments和ListofWords。 ListofComments在其元素中有许多单词。例如。 ListofComments [0] ='我爱蟒蛇' ListofComments [1] ='我讨厌python' 但是目前我只能将它分成单个单词,用于ListofComments的最后一个元素。以下是我目前的情况。
for x in range(0, 58196):
ListofWords = (re.sub("[^\w]", " ", ListofComments[x]).split())
我明白可能需要另一个循环,但我无法确切地指出如何解决这个问题。欲望输出将是这些ListofWords [0] ='我'ListofWords [1] ='爱'ListofWords [2] ='python'ListofWords [3] ='我'LstofWords [4] ='讨厌'ListofWords [5] ] ='python'
答案 0 :(得分:0)
我相信你唯一的问题是你在每次循环迭代时都会覆盖你的ListofWords
,因此为什么在循环结束时你只能看到ListofComments
的最后一个元素的单词。 / p>
试试这个:
ListofWords = []
for x in range(0, 58196):
ListofWords.extend(re.sub("[^\w]", " ", ListofComments[x]).split())
编辑:
正如其他人所说,您要确保避免list out of range
错误。我并不想改变你的其余代码,只是为了明确必须改变的内容,让它按照你的预期工作。
编写上述内容的更简单(也更强大)的方法是:
ListofWords = []
for comment in ListofComments:
ListofWords.extend(re.sub("[^\w]", " ", comment).split())
答案 1 :(得分:0)
如果我理解得好,这将解决您的问题:
list_of_words = []
my_list = ["i love python3", "i hate python2"]
for sentence in my_list:
words = sentence.split(" ")
for word in words:
list_of_words.append(word)
答案 2 :(得分:0)
您的解决方案有两个问题:
ListofWords
在每次迭代时都会被覆盖这是我的解决方案
from functools import reduce
# split comments
split_comments = [re.sub("[^\w]", " ", c).split() for c in ListofComments]
# >>> [['I', 'love', 'python'], ['I', 'hate', 'python']]
# flatten list of lists
reduce(lambda x, y: x + y, split_comments)
# >>> ['I', 'love', 'python', 'I', 'hate', 'python']