检查字符串是否为空(或空格)

Check whether a string is empty (or spaces)

我有一个字符串是:

>>> 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() 无法检查它是否是一个充满空格的字符串。我怎样才能检测到这种字符串是 "space string"?

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

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

if ' ' in str:
    #do something
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"

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

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

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

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

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