我有一个清单如下:
item_list=['Manpower Service','Manpower Outsourcing','Healthcare Sanitation','Hiring
of Sanitation','Custom Bid For Services','Sanitation',
'Facility Management', 'Security Manpower Service']并有一根绳子,如:
String_text="Manpower Outsourcing Services - Minimum Wage - Sem..."这个字符串每次都会改变。我想要的是检查是否有任何列表项包含在字符串中,而我不知道该如何做?有人能给我一个好办法吗?
发布于 2022-02-24 03:43:40
请注意,这可能是一个NLP问题,但我的解决办法不是。
如果您计划检查列表中的成员是否在字符串中,则应该是非常直接的。
[i for i in item_list if i in String_text]
... ['Manpower Outsourcing']这将只保留字符串中的列表成员,但请注意,它只保留“精确匹配”。
如果此输出不适合您的目的,则可能有其他几种方法可以检查。
将字符串中的成员标记为1,对其他成员标记为0。
[1 if i in String_text else 0 for i in item_list]
... [0, 1, 0, 0, 0, 0, 0, 0]或者,如果您想检查每个成员在字符串中的数量,我建议将它们拆分。
item_list2 = [i.split(" ") for i in item_list]
[sum([1 if i in String_text else 0 for i in x])/len(x) for x in item_list2]
... [1.0, 1.0, 0.0, 0.0, 0.25, 0.0, 0.0, 0.6666666666666666]您会注意到,最后一位成员的输出与前人不同,因为第一位成员“人力服务”分别出现在字符串中,分别为“劳动力”和“服务”。你可以为你的目的选择合适的解决方案。
再次,请注意,这可能是一个NLP问题,我的解决方案只是哑字符串匹配。
发布于 2022-02-24 03:33:22
我对“这个字符串每次变化”都很困惑,但我希望下面的代码能够解决您的问题。
[x for x in item_list if x in String_text]发布于 2022-02-24 03:39:26
最简单的方法是循环遍历item_list中的值,并使用in关键字检查每个项是否在String_text字符串中:
found = False
found_item = ""
for item in item_list:
found = item in String_text
if found:
found_item = item
break
print("Was item found: " + str(found))
if found:
print("Item Found: " + found_item)https://stackoverflow.com/questions/71246725
复制相似问题