我有一个Unicode字符串,在开头和结尾有一些不间断的空格。使用strip()
与strip(string.whitespace)
时,我会得到不同的结果。
>>> import string
>>> s5 = u'\xa0\xa0hello\xa0\xa0'
>>> print s5.strip()
hello
>>> print s5.strip(string.whitespace)
hello
strip()
的文档说:“如果省略或None
,chars
参数默认删除空格。” string.whitespace
的文档说:“包含所有被视为空格的字符的字符串。”
因此,如果string.whitespace
包含所有被视为空格的字符,那么为什么结果会有所不同?它与Unicode有关吗?
我正在使用Python 2.7.6
答案 0 :(得分:10)
来自string.whitespace
的文档:
包含所有 ASCII字符的字符串 空白。这包括字符空间,制表符,换行符,返回, formfeed和垂直标签。
在python3下也是如此,其中删除了所有非ASCII常量。 (在python2中,某些常量可能受locale
设置的影响。)
因此,行为的差异非常明显,因为strip()
删除任何 unicode 空格,而strip(string.whitespace)
只删除ASCII空格。您的字符串显然包含非ASCII空格。