【发布时间】:2014-07-17 21:32:10
【问题描述】:
我有一个名为 lst 的博客标题列表和一个名为 stops 的停用词列表。
这段代码完全符合我的要求,从lst 中删除了两个列表中出现的每个单词:
for line in lst:
for stop in stops:
line = re.sub(r"\b" + stop.rstrip("\n") + r"\b", "", line.lower())
print(line)
但是,出于好奇和编写更简洁/高效代码的愿望,我想将其转换为列表理解。
我试过这个:
lst = [[re.sub(r"\b" + stop.rstrip("\n") + r"\b", "", line.lower()) for stop in stops] for line in list]
...但无济于事。执行时,代码会抛出ValueError 异常,如下所示:
Traceback (most recent call last):
File "F:\Visual Studio Projects\RBTrends\RBTrends\main.py", line 55, in <module> prepData()
File "F:\Visual Studio Projects\RBTrends\RBTrends\main.py", line 42, in prepData
filelst = aps.stripStopWords(filelst, STOP_WORDS_PATH)
File "F:\Visual Studio Projects\RBTrends\RBTrends\articleprocesses.py", line 34, in stripStopWords
lst = [[re.sub(r"\b" + stop.rstrip("\n") + r"\b", "", line.lower()) for stop in stops] for line in list]
TypeError: 'type' object is not iterable
谁能解释这个错误的原因,以及我如何通过编写不同的列表理解来解决它?
【问题讨论】:
标签: python list for-loop list-comprehension