Python的split()方法不仅删除空格

ruarlubt  于 2023-03-20  发布在  Python
关注(0)|答案(2)|浏览(150)

在处理一个问题时,我无意中注意到,没有任何参数的Python str.split()方法不仅会移除最新官方文档中描述的空格,还会移除字符串中任何位置的'\n'
例如,假设我想使用不带任何参数的.split()拆分字符串' a b c d \n ',根据官方文档,预期输出如下:['a', 'b', 'c', 'd', '\n'],则会得到以下结果:['a', 'b', 'c', 'd'] .
无论'\n'是在字符串的末尾、开头还是内部,情况都是如此。
我找不到任何地方提到str.split()的这个属性,因此我有一个问题:这种行为可靠吗?在任何情况下都是这样吗?或者只是某种幸运?
我运行的是Python 3.10.8

q7solyqu

q7solyqu1#

你误解了你所链接的文档。术语“空格”* 包括 * 换行符。来自Python的str.isspace()的文档:
如果在Unicode字符数据库(参见unicodedata)中,字符的常规类别是Zs(“分隔符,空格”),或者其双向类是WSBS之一,则该字符为空白。
Unicode entry中,可以看到类别是Cc(控件),但双向类是B(段落分隔符),因此它被上面引用的空白定义所覆盖(WS是Unicode空白,Python空白的子集,S是段分隔符)。
下面的脚本显示换行符确实在那个空格类中:

>>> "\n".isspace()
True

完整列表可通过string.whitespace常量获得:

>>> import string
>>> string.whitespace
' \t\n\r\x0b\x0c'

因此它包括空格、制表符、换行符、回车符、垂直制表符和换页符。

dauxcl2d

dauxcl2d2#

我认为您没有得到它,它没有删除\n它工作正常

相关问题