我正在移植一些调用split()字符串的Python 2 代码,所以我需要知道它的确切行为。文档指出,当您不指定sep参数时,“连续空格的运行被视为单个分隔符”。
不幸的是,它没有指定将是哪些字符。有一些明显的竞争者(如空格、制表符和换行符),但 Unicode 包含许多其他候选者。
哪些字符被 视为空格split()?
由于答案可能是特定于实现的,我的目标是 CPython。
(注意:我自己研究了这个答案,因为我在任何地方都找不到它,所以我会在这里发布它,希望对其他人有益。)
我有一个Unicode字符串,在开头和结尾有一些不间断的空格.使用strip()vs. 时我会得到不同的结果strip(string.whitespace).
>>> import string
>>> s5 = u'\xa0\xa0hello\xa0\xa0'
>>> print s5.strip()
hello
>>> print s5.strip(string.whitespace)
hello
Run Code Online (Sandbox Code Playgroud)
文档strip()说,"如果省略或None,chars参数默认删除空格." 文档string.whitespace说"包含所有被认为是空格的字符的字符串".
因此,如果string.whitespace包含所有被视为空格的字符,那么为什么结果会有所不同?它与Unicode有关吗?
我使用的是Python 2.7.6