这是我第一次发帖,但我有一个问题,关于尝试在python中创建一个函数,该函数将搜索字符串列表并返回我正在寻找的任何单词。以下是目前为止的内容:
def search_words(data, search_words):
keep = []
for data in data:
if data in search_words:
keep.append(data)
return keep
这是我正在搜索的数据和我想找到的单词:
data = ['SHOP earnings for Q1 are up 5%',
'Subscriptions at SHOP have risen to all-time highs, boosting sales',
"Got a new Mazda, VROOM VROOM Y'ALL",
'I hate getting up at 8am FOR A STUPID ZOOM MEETING',
'TSLA execs hint at a decline in earnings following a capital expansion program']
words = ['earnings', 'sales']
在做print(search_words(data=data, search_words=words))
我的列表(keep
)返回空括号[],我不确定如何解决这个问题。我知道在字符串中搜索一个单词与在列表中搜索一个数字是不同的,但我不知道如何修改我的代码来解释这一点。如有任何帮助,不胜感激。
您可以使用以下命令。这将保留data
中包含至少一个words
的所有句子:
keep = [s for s in data if any(w in s for w in words)]
因为它们都是字符串,所以不要遍历它们,而是将它们全部组合并搜索。也使words
为set
:
[word for word in ' '.join(data).split() if word in words]
使用正则表达式:
re.findall('|'.join(words), ''.join(data))
['earnings', 'sales', 'earnings']
您可以使用以下命令。这将保留数据中包含至少一个或两个单词的所有句子:这是一种为初学者设计的程序。数据,search_words必须是一个列表。
def search_words(data, search_words):
keep = []
for dt in data:
for sw in search_words:
if sw in dt:
keep.append(dt)
return keep