【问题标题】:How to find out if str has any number [closed]如何找出str是否有任何数字[关闭]
【发布时间】:2023-04-01 17:29:01
【问题描述】:

我有一个问题。如果我有一个字符串,例如:

str1 = 'Wazzup1'

和数字:

nums = '1234567890'

我需要一个代码来查看 str1 并告诉我它是否有任何数字(不是所有数字)。请帮忙。

【问题讨论】:

    标签: python string digit


    【解决方案1】:

    使用anygenerator expression

    any(x in nums for x in str1)
    

    下面是一个演示:

    >>> str1 = 'Wazzup1'
    >>> nums = '1234567890'
    >>> any(x in nums for x in str1)
    True
    >>>
    

    请注意,以上内容适用于您有一组自定义数字要测试的情况。但是,如果您只是在寻找数字,那么更简洁的方法是使用 str.isdigit:

    >>> str1 = 'Wazzup1'
    >>> any(x.isdigit() for x in str1)
    True
    >>>
    

    【讨论】:

      【解决方案2】:

      使用any 函数,该函数返回一个布尔值,当迭代中至少有一个元素为真时为真。

      string = 'Wazzup1'
      result = any(c.isdigit() for c in string)
      print(result) # True
      

      【讨论】:

        【解决方案3】:

        正如大多数 Python 程序员会告诉你的,最简洁的方法是使用:

        any(x in nums for x in str1)
        

        但是,如果您是 Python 新手或需要更好地掌握字符串操作的基础知识,那么您应该学习如何使用更基础的工具来做到这一点。

        您可以在 Python 中使用方括号来访问字符串、列表、元组或任何其他 iterable 中索引的各个元素。字符串的字符从 0 开始索引(例如,"hello"[0] 给出 "h")。

        使用for循环,对于Python新手来说,这个解决方案比上面提到的any解决方案更容易理解:

        result = False
        for i in range(len(str1)):
            if str1[i] in nums:
                result = True
        

        Python for 循环也可以直接遍历字符串的元素:

        result = False
        for x in str1:
            if x in nums:
                result = True
        

        在本文的第一个代码 sn-p 中,表达式x in nums for x in str1 使用了 Python 的 列表推导 功能。这会遍历str1 的每个元素x 并找到x in nums 的结果。 any(x in nums for x in str1) 返回True 如果(且仅当)这些结果中至少有一个是True(意味着数字在str1 中)。这很像本文中给出的第二个for 循环示例,许多Python 程序员选择此选项是因为它简洁且其他Python 程序员仍然可以理解。

        【讨论】:

          【解决方案4】:

          您可以使用any()string.digits来检查字符串是否包含数字:

          import string
          
          if any(x in string.digits for x in str1):
              pass
          

          【讨论】:

            【解决方案5】:

            你也可以使用正则表达式:

            >>> str1 = 'Wazzup1'
            >>> import re
            >>> bool(re.search(r'\d', str1))
            True
            

            注意:由于语言环境或 Unicode,c.isdigit()c in numsint(c)\d 定义数字的方式可能有所不同。

            【讨论】:

              猜你喜欢
              • 2016-03-21
              • 1970-01-01
              • 2011-02-25
              • 2017-06-05
              • 1970-01-01
              • 1970-01-01
              • 2014-08-02
              • 1970-01-01
              • 2010-11-24
              相关资源
              最近更新 更多