Python 字符串类型中 ``split(“\n“)`` 与 ``splitlines()`` 方法的一些区别

最近在以 self.__print("#" * 20 + "\n") 调用自己写的 __print 接口时发现打印的时候 "\n" 没有打出来,进而发现了 split("\n")splitlines() 方法的一些区别。

  • 一个是参数上,split 需要传递一个字符串作为分隔符,可以不以换行标记进行字符串切割。两者的返回值都是列表。另外,如果想把字符串变成以每一个字符为元素的列表,应当使用 list() 函数而不是 split()split("") 方法。
  • splitlines() 会将三个换行标记 "\r""\n""\r\n" 视为换行符进行切割,例如执行 "1\r2\n3\r\n4".splitlines() 的结果为 ["1", "2", "3", "4"]。而 "1\r2\n3\r\n4".split("\n") 的结果则为 ["1\r2", "3\r", "4"]。也就是说,Python 字符串的 split 方法只会以字符串 "\n" 进行切割,不会将各种操作系统下的不同换行标记进行切割。
  • 若字符串以换行标记结尾,splitlines() 不会额外出现一个空串。例如 "1\n".splitlines() 的结果为 ["1"],而 "1\n".split("\n") 的结果为 ["1", ""]。但如果一个换行标记与上一个换行标记或字符串开头之间的内容为空,那么还是会会出现空串,例如 "\r\n\r\r".splitlines() 的结果为 ["", "", ""],其中第一个换行标记 "\r\n" 到字符串开头之间没有字符,产生第一个空串(索引 0),第二个换行标记 "\r" 到第一个换行标记 "\r\n" 之间没有字符,产生第二个空串(索引 1),第三个换行标记 "\r" 到第二个换行标记 "\r" 之间没有字符,产生第三个空串(索引 2)。

大概就是,基于以下两个原因,推荐 splitlines 在处理文本文档的时候使用,其它的根据需求使用啦!

  • 有的人喜欢结尾不加一个换行标记,有的人喜欢多一个换行标记。使用 split 替代的方案:切割后把结尾的空串都 pop() 掉。
  • 换行标记在不同操作系统上不同,建议直接用 splitlines。使用 split 替代的方案:将所有 "\r\n" 先替换为 "\n",再将所有 "\r" 替换为 "\n"

另外,可以看看 https://blog.csdn.net/weixin_42278473/article/details/86316474

相关推荐
我的xiaodoujiao7 分钟前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 44--将自动化测试结果自动推送至钉钉工作群聊
前端·python·测试工具·ui·pytest
沈浩(种子思维作者)7 分钟前
铁的居里点(770度就不被磁铁吸了)道理是什么?能不能精确计算出来?
人工智能·python·flask·量子计算
yufuu989 分钟前
使用Scikit-learn进行机器学习模型评估
jvm·数据库·python
f狐0狸x12 分钟前
【C++修炼之路】C++ list容器基本用法详解
开发语言·c++·list
坚持就完事了17 分钟前
Java的OOP
java·开发语言
计算机毕业编程指导师21 分钟前
大数据可视化毕设:Hadoop+Spark交通分析系统从零到上线 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·城市交通
jllllyuz21 分钟前
基于MATLAB的锂电池物理对象建模实现
开发语言·matlab
MyBFuture26 分钟前
C#数组详解:一维二维与交错数组
开发语言·windows·c#·visual studio·vision pro
计算机毕业编程指导师29 分钟前
【计算机毕设选题】基于Spark的车辆排放分析:2026年热门大数据项目 毕业设计 选题推荐 毕设选题 数据分析 机器学习 数据挖掘
大数据·hadoop·python·计算机·spark·毕业设计·车辆排放
浔川python社34 分钟前
浔川社团关于产品数据情况的官方通告
python