Mos*_*dze 1 python string split python-3.x
在解决一个问题时,我意外地注意到不带任何参数的 Python str.split() 方法不仅删除了最新官方文档中描述的空格,而且还删除了'\n'字符串中任何位置的空格。
例如,假设我想在不带任何参数的情况' a b c d \n '下分割以下字符串.split()。根据官方文档,预期输出如下:['a', 'b', 'c', 'd', '\n'],但是,您得到以下结果: ['a', 'b', 'c', 'd']。
无论'\n'是在字符串的结尾、开头还是内部都是如此。
我找不到任何地方提到 的这个属性str.split(),因此我有一个问题:这种行为可靠吗?在任何情况下它总是会做同样的事情,还是只是某种幸运?
我正在运行Python 3.10.8
您误读了链接到的文档。术语“空白”包括换行符。来自 Python 的文档str.isspace():
如果在 Unicode 字符数据库(请参阅
unicodedata)中,某个字符的一般类别是Zs(“分隔符,空格”),或其双向类别是WS、B或 之一,则该字符是空白S。
从Unicode 条目中,您可以看到类别是Cc(控制),但双向类是B(段落分隔符),因此它被上面引用的空白定义覆盖(WS是 Unicode 空白,Python 空白的子集,并且S是段分隔符)。
以下记录显示换行符确实位于该空白类中:
>>> "\n".isspace()
True
Run Code Online (Sandbox Code Playgroud)
完整列表可以通过常量获得string.whitespace:
>>> import string
>>> string.whitespace
' \t\n\r\x0b\x0c'
Run Code Online (Sandbox Code Playgroud)
所以它包括空格、制表符、换行符、回车符、垂直制表符和换页符。