首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查列表中的任何项是否包含Python中的字符串?

如何检查列表中的任何项是否包含Python中的字符串?
EN

Stack Overflow用户
提问于 2022-02-24 03:26:29
回答 4查看 1K关注 0票数 -1

我有一个清单如下:

代码语言:javascript
复制
item_list=['Manpower Service','Manpower Outsourcing','Healthcare Sanitation','Hiring 
             of Sanitation','Custom Bid For Services','Sanitation',
                 'Facility Management', 'Security Manpower Service']

并有一根绳子,如:

代码语言:javascript
复制
String_text="Manpower Outsourcing Services - Minimum Wage - Sem..."

这个字符串每次都会改变。我想要的是检查是否有任何列表项包含在字符串中,而我不知道该如何做?有人能给我一个好办法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-02-24 03:43:40

请注意,这可能是一个NLP问题,但我的解决办法不是。

如果您计划检查列表中的成员是否在字符串中,则应该是非常直接的。

代码语言:javascript
复制
[i for i in item_list if i in String_text]
... ['Manpower Outsourcing']

这将只保留字符串中的列表成员,但请注意,它只保留“精确匹配”。

如果此输出不适合您的目的,则可能有其他几种方法可以检查。

将字符串中的成员标记为1,对其他成员标记为0。

代码语言:javascript
复制
[1 if i in String_text else 0 for i in item_list]
... [0, 1, 0, 0, 0, 0, 0, 0]

或者,如果您想检查每个成员在字符串中的数量,我建议将它们拆分。

代码语言:javascript
复制
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问题,我的解决方案只是哑字符串匹配。

票数 2
EN

Stack Overflow用户

发布于 2022-02-24 03:33:22

我对“这个字符串每次变化”都很困惑,但我希望下面的代码能够解决您的问题。

代码语言:javascript
复制
[x for x in item_list if x in String_text]
票数 0
EN

Stack Overflow用户

发布于 2022-02-24 03:39:26

最简单的方法是循环遍历item_list中的值,并使用in关键字检查每个项是否在String_text字符串中:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71246725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档