1

我有一个字符串:

>>> 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() 无法检查它是否是一个充满空格的字符串。如何将这种字符串检测为“空格字符串”?

4

3 回答 3

4

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

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

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

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

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

于 2017-03-27T03:49:14.560 回答
1

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

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

if ' ' in str:
    #do something
于 2017-03-27T03:18:37.863 回答
0
import re
if re.search(r"^\s+$"):
    print "All Spaces"

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

ASCII space, tab, line feed, carriage return, vertical tab,form feed


或者,可能更有效,您可以使用strip()

a = "             ".strip()
if not a:
    print "All spaces"
于 2017-03-27T03:32:58.087 回答