【发布时间】:2020-05-14 22:17:57
【问题描述】:
我有一个这样的字符串:
my_string = "Hello, I need to find php, software-engineering, html, security and safety things or even Oracle in your dataset. #C should be another opetion, databases and queries"
还有这样的列表:
my_list = ['C#', 'Django' 'Software-Engineering', 'C', 'PHP', 'Oracle Cload', 'React', 'Flask', 'IT-Security market', 'Databases and Queries']
我想从 my_list 中提取每个可能的 my_string' 单词。
这是我所期望的:
['PHP', 'Software-Engineering', 'C', 'Oracle Cload', 'IT-Security market', 'Databases and Queries']
这是我尝试过的:
import re
try:
user_inps = re.findall(r'\w+', my_string)
extracted_inputs = set()
for user_inp in user_inps:
if user_inp.lower() in set(map(lambda x: x.lower(), my_list)):
extracted_inputs.add(user_inp)
except Exception:
extracted_inputs = set()
但我明白了:
['php', 'C']
效率也是我关心的问题。任何帮助将不胜感激。
【问题讨论】:
-
匹配是否应该区分大小写?
-
不,没关系。不算太大。包含数千个元素的列表(可能不算很大)
-
当您说效率时,我们关注的是哪些性能统计数据?我们是否有一个巨大的输入字符串和一个巨大的数组来匹配?
-
我刚刚编辑了我的答案
-
在您的预期输出中,您包含的单词不是列表中的元素。但是,它们位于列表中的某个元素中,例如
Oracle Cloud。您是否要匹配列表中部分元素匹配的任何值?
标签: python python-3.x string list