【问题标题】:Python: is isalnum() the same as isalpha with isdigit?Python:isalnum() 与 isalpha 和 isdigit 一样吗?
【发布时间】:2016-10-12 05:56:21
【问题描述】:

有没有办法具体验证这一点?我试图解决一个编码问题,但似乎有一个测试用例(没有向我透露)认为这是错误的。这在哪些情况下不成立?

【问题讨论】:

  • 是的,通过查找python源代码。
  • 供参考,isalnum()
  • "isalpha with isdigit"是什么意思?你的问题不够准确。
  • 我的意思是在代码形式中“k.isalpha() 或 k.isdigit()”等价于 k.isalnum()

标签: python string


【解决方案1】:

在某些情况下isalphaisdigit 返回False,但isalnum 返回True。所以isalnum不仅仅是其他两者的结合。

>>> 'a1'.isalpha(), 'a1'.isdigit(), 'a1'.isalnum()
(False, False, True)

【讨论】:

    【解决方案2】:

    来自 Python 3 的文档:

    str.isalnum()
    如果字符串中的所有字符都是字母数字并且至少有一个字符,则返回 true,否则返回 false。如果以下之一返回 True,则字符 c 是字母数字:c.isalpha()、c.isdecimal()、c.isdigit() 或 c.isnumeric()。

    所以它与isalpha()isdigit() 不同。

    【讨论】:

      【解决方案3】:

      根据 Python 2.7 文档

      str.isalnum()
      如果字符串中的所有字符都是字母数字并且至少有一个字符,则返回 true,否则返回 false。

      根据 Python 3.6.6 文档

      str.isalnum()
      如果字符串中的所有字符都是字母数字并且至少有一个字符,则返回 true,否则返回 false。如果以下之一返回 True,则字符 c 是字母数字:c.isalpha()c.isdecimal()c.isdigit()c.isnumeric()

      这里有一些在 python v3.6.6 中对isalnum() 的测试

      >>> "alpha".isalnum()
      True
      >>> "alpha10".isalnum()
      True
      >>> "alpha%&@".isalnum()
      False
      >>> "alpha %&@".isalnum()
      False
      >>> "alpha with space".isalnum()
      False
      

      在第一次测试中"alpha".isalnum() 返回True

      而在isalpha()测试中,结果是这样的:

      >>> "alpha".isalpha()
      True
      >>> "alpha10".isalpha()
      False
      >>> "alpha%&@".isalpha()
      False
      >>> "alpha %&@".isalpha()
      False
      >>> "alpha with space".isalpha()
      False
      

      所以问题是当字符串只包含字符时,isalnum()isalpha() 都返回 True

      >>> "alpha".isalnum()
      True
      >>> "alpha".isalpha()
      True
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多