我想创建一个新列表,该列表与句子列表和关键字列表匹配。
list = ['This sentence contains disclosure.', 'This sentence contains none declared.', 'This sentence contains competing interest.', 'This sentence contains authors declare.']
keywords = ['disclosure ', 'none declared', 'interest']
应该打印出的新列表应该这样
matched_list = ['This sentence contains disclosure.', 'This sentence contains none declared.']
我尝试使用
r = re.compile('.*disclosure')
newlist = list(filter(r.match, list))
但是,我的关键字列表很大,因此不可能在r = re.compile('.*keywords')
中全部键入关键字。还有其他方法可以将句子列表与关键字列表匹配。
答案 0 :(得分:1)
您将必须对照关键字列表检查每个字符串。假设简单的字符串匹配就足够了(不需要正则表达式),请使用列表推导。
window.FirebasePlugin.onNotificationOpen(function(data) {
console.log(JSON.stringify(data));
alert("the notification recieved ")
}, function(error) {
console.error(error);
});
这实际上只是一种简洁的说法:
matched_list = [
string for string in lst if any(
keyword in string for keyword in keywords)]
matched_list = []
for string in lst:
if any(keyword in string for keyword in keywords):
matched_list.append(string)
将短路,为匹配的第一个关键字返回any
(如果找不到匹配项,则返回True
)。
如果要使用正则表达式,则可以像往常一样预编译模式,然后在循环内调用False
:
pattern.search