【问题标题】:Check whether a string is empty (or spaces)检查字符串是否为空(或空格)
【发布时间】:2017-08-19 15:03:51
【问题描述】:

我有一个字符串:

>>> a = "           "
>>> a.isspace()
False
>>> a
'\xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             \xe2\x80\x83\xe2\x80\x83             '
>>> print a
                                                                                                                                                                     
>>> 

我们可以看到,当我打印字符串 a 时,它都是空格。但是,使用 isspace() 无法检查它是否是一个充满空格的字符串。如何将这种字符串检测为“空格字符串”?

【问题讨论】:

    标签: python whitespace isspace


    【解决方案1】:

    str.isspace() 检查字符串是否只是一个空格,因此如果存在其他字符,它将不起作用。

    您可以使用 str.contains(' ') 来检查字符串中是否有空格或

    if ' ' in str:
        #do something
    

    【讨论】:

      【解决方案2】:
      import re
      if re.search(r"^\s+$"):
          print "All Spaces"
      

      上面的正则表达式将匹配任何只包含以下字符的字符串:

      ASCII spacetabline feedcarriage returnvertical tabform feed


      或者,您可以使用strip()

      a = "             ".strip()
      if not a:
          print "All spaces"
      

      【讨论】:

        【解决方案3】:

        您没有只包含空白字符的字符串。您有一个 bytestring,其中包含 UTF-8 编码 的 Unicode 字符串,该字符串仅包含空白字符。

        解码 UTF-8 中的字节会生成一个 Unicode 字符串,该字符串报告 Trueisspace

        >>> a.decode('utf-8').isspace()
        True
        

        但不要只是将decode('utf-8') 打入您的临时代码并希望它有效。

        始终跟踪您使用的是 Unicode 还是字节串。通常,在 Unicode 中工作,立即将字节串输入转换为 Unicode,并且仅在 Unicode 离开您的代码时将其转换为字节串。

        【讨论】:

        • 谢谢!你的方法有效!我还发现它似乎属于“不可打印”的字符。
        猜你喜欢
        • 2015-06-05
        • 1970-01-01
        • 2015-06-12
        • 1970-01-01
        • 2010-10-23
        • 2020-05-29
        • 2017-01-10
        • 1970-01-01
        • 2010-12-16
        相关资源
        最近更新 更多