尽管文档表明它们应该相同,但strip()和strip(string.whitespace)给出了不同的结果
问题内容:
我有一个Unicode字符串,在开头和结尾都有一些不间断的空格。使用strip()
vs时得到不同的结果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
问题答案:
一个字符串,其中包含所有被视为空格的 ASCII字符 。这包括字符空格,制表符,换行符,返回符,换页符和垂直制表符。
在python3下是相同的,其中所有非ASCII常量均已删除。(在python2中,某些常量可能会受到locale
设置的影响)。
因此,行为上的差异非常明显,因为strip()
它确实 删除了任何 unicode
空格,而strip(string.whitespace)
只删除了ASCII空间。您的字符串显然包含非ASCII空格。