【问题标题】:Check if string appears as its own word - Python检查字符串是否显示为自己的单词 - Python
【发布时间】:2017-12-11 18:08:30
【问题描述】:

假设我正在寻找单词"or"。我想要的是检查该单词是作为单词出现还是作为另一个单词的子字符串出现。

例如

输入 - “或” 输出 - “真”

输入 - “for” 输出 - “假”

我想我可以检查前后的字符是否是字母,但是有没有更有效/更简单的方法呢?谢谢

编辑 此外,字符串将成为句子的一部分。所以我希望“我可以去购物与否”返回 true,但“我可以去买鞋”返回 false。 因此使用 == 是行不通的。很抱歉我应该早点提到这一点

【问题讨论】:

  • 如果只是一个词,为什么不直接使用==
  • 这是因为它是句子的一部分,而不仅仅是一个单词。例如,我希望“我可以去购物与否”返回 true,但“我可以去买鞋”返回 false。所以使用 == 是行不通的。很抱歉,我应该在问题中提到这一点。

标签: python string python-3.x


【解决方案1】:

使用正则表达式。

>>> import re
>>> re.search(r'\bor\b', 'or')
<_sre.SRE_Match object at 0x7f445333a5e0>
>>> re.search(r'\bor\b', 'for')
>>> 

【讨论】:

    【解决方案2】:

    您可以为此使用正则表达式:

    import re
    
    def contains_word(text, word):
        return bool(re.search(r'\b' + re.escape(word) + r'\b', text))
    
    print(contains_word('or', 'or')) # True
    print(contains_word('for', 'or')) # False
    print(contains_word('to be or not to be', 'or')) # True
    

    【讨论】:

      【解决方案3】:

      如果它在行中,则创建一个仅包含测试的检查器

      def check_word_in_line(word, line):
          return " {} ".format(word) in line
      
      print(check_word_in_line("or", "I can go shopping or not")) //True
      print(check_word_in_line("or", "I can go shopping for shoes")) //False
      

      【讨论】:

        【解决方案4】:

        您可以使用nltk(自然语言工具包)将句子拆分为单词,然后使用==检查是否存在某个单词。

        NLTK Installation

        NLTK Package Download

        import nltk
        
        def checkword(sentence):
            words = nltk.word_tokenize(sentence)
            return any((True for word in words if word == "or"))
        
        print(checkword("Should be false for."))
        print(checkword("Should be true or."))
        

        【讨论】:

        • 我已经编辑了你的答案有两个原因:1. 没有必要在if 之后写else 后跟return,因为你只能从一个函数返回一次; 2. if/else 子句中不需要根据条件返回布尔值,因为条件本身就是布尔值。
        猜你喜欢
        • 1970-01-01
        • 2011-07-16
        • 1970-01-01
        • 1970-01-01
        • 2014-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多