我正在kaggle.com上执行此python教程。这是我当前的任务:
“研究人员已经收集了数千篇新闻文章。但是,她希望将注意力集中在包括特定单词的文章上。完成以下功能可以帮助她过滤文章列表。
您的功能应满足以下条件
这是我尝试过的:
def word_search(doc_list, keyword):
mylist = []
for ele in doc_list:
if len([ele for ele in ele.lower().strip(".,").split() if ele == keyword.lower()]) > 0:
mylist.append(doc_list.index(ele))
return mylist
但是这个例子
doc_list=['The Learn Python Challenge Casino.', 'They bought a car, and a horse', 'Casinoville?']
word_search(doc_list, 'car')
给我[]
而不是期望的[1]
(因为第二个字符串中包含“汽车”)。
为了调试,我将代码更改为
def word_search(doc_list, keyword):
for ele in doc_list:
print([ele for ele in ele.lower().rstrip('.,').split()])
我明白了
['the', 'learn', 'python', 'challenge', 'casino']
['they', 'bought', 'a', 'car,', 'and', 'a', 'horse']
['casinoville?']
如您所见,尽管我尝试剥离(“。,”),但“,”与“ car”仍然存在。关于为什么会这样的任何想法?
如果尝试"car,".strip(".,")
,我会得到预期的'car'
。
谢谢!
编辑:感谢您的帮助-我不知道它仅在边缘剥离。这是面向未来读者的两种解决方案:
def word_search(doc_list, keyword):
mylist = []
for ele in doc_list:
tmp = [ele.lower().strip(".,") for ele in ele.split()]
if len([ele for ele in tmp if ele == keyword]) > 0:
mylist.append(doc_list.index(ele))
# if len([ele.strip(".,") for ele in ele.lower().split() if ele.strip(".,") == keyword.lower()]) > 0:
# mylist.append(doc_list.index(ele))
return mylist
答案 0 :(得分:1)
您要删除整个句子,而不是每个单词。 data <- data.frame(id= c(1,2,3), year = c(2018,2018,2019), samples = c("species1","species2","species1"), panda = c(1,0,0), tiger = c(0,1,1))
> data
id year samples panda tiger
1 2018 species1 1 0
2 2018 species2 0 1
3 2019 species1 0 1
位于句子的中间,因此不会被剥夺。更改为:
car,