【问题标题】:How to check if whole words from string are contained in other string?如何检查字符串中的整个单词是否包含在其他字符串中?
【发布时间】:2020-10-20 14:41:46
【问题描述】:

如果字符串中的一个单词与另一个字符串中的单词相同,我希望我的程序返回 True,但前提是整个单词匹配,而不是单个字母或部分匹配。这是我的意思的说明......

a = "hi please help"
b = "help anyone"

if any(a.split()) == any(b.split()):
    print("True")

这暂时有效,但是如果我将 a 换成其他东西...

a = "h"
b = "help"

if any(a.split()) == any(b.split()):
    print("True")

它仍然打印“True”,这不是我的意图。 我确实看过其他类似的线程,但我找不到任何解决部分不被接受的问题,但整个字符串不必是子字符串。

【问题讨论】:

    标签: python string substring


    【解决方案1】:

    将两个字符串转换为集合并创建一个交集:

    if set(a.split()) & set(b.split()):
        print("True")
    

    【讨论】:

      【解决方案2】:

      试试这个:

      set_a = set(a.split())
      any(w in set_a for w in b.split())
      

      如果b.split() 中的任何单词wset_a 中,这将评估为True,其中set_a 是由a.split() 组成的一组单词。

      这应该比设置交集更快,因为 (1) 它只为其中一个拆分字符串创建一个集合,(2) 一旦找到匹配项就会停止搜索,并且 (3) 它不会为交集结果创建一个集合。

      【讨论】:

        【解决方案3】:

        试试这个:

        for i in b.split():
          if a.split().count(i):
            print("True")
        

        【讨论】:

        • a.split().count(i)i in a.split() 更昂贵,并且每回合执行a.split() 也很昂贵。您的提案也可以多次打印 True
        【解决方案4】:

        这应该可以:any([e in a.split() for e in b.split()])

        【讨论】:

          猜你喜欢
          • 2018-08-27
          • 2019-08-06
          • 2012-05-20
          • 2014-01-25
          • 1970-01-01
          • 2019-01-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多