在处理一个问题时,我无意中注意到,没有任何参数的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
2条答案
按热度按时间q7solyqu1#
你误解了你所链接的文档。术语“空格”* 包括 * 换行符。来自Python的
str.isspace()
的文档:如果在Unicode字符数据库(参见
unicodedata
)中,字符的常规类别是Zs
(“分隔符,空格”),或者其双向类是WS
、B
或S
之一,则该字符为空白。在Unicode entry中,可以看到类别是
Cc
(控件),但双向类是B
(段落分隔符),因此它被上面引用的空白定义所覆盖(WS
是Unicode空白,Python空白的子集,S
是段分隔符)。下面的脚本显示换行符确实在那个空格类中:
完整列表可通过
string.whitespace
常量获得:因此它包括空格、制表符、换行符、回车符、垂直制表符和换页符。
dauxcl2d2#
我认为您没有得到它,它没有删除\n它工作正常