split,rsplit与splitlines作用

  • 0 前言
  • 1 split
  • 2 rsplit
  • 3 splitlines

0 前言

在编程的过程中,字符串是我们最常打交道的数据类型,对字符串进行切分也是我们经常进行的操作。python提供了很多处理字符串的函数,处理起来非常方便。这里介绍python中与字符串切分相关的三个函数,分别是split,rsplit与splitlines。
首先需要明确的一点是三个函数的作用都是进行字符串切分。其中split函数是最基本的切分函数,rsplit与splitlines函数的功能,都能使用split函数实现,额外提供这两个函数,仅仅是为了操作方便而已。

1 split

语法:

str.split(separator,num)

其中str表示要切分的字符串,separator表示分隔符,num表示切分的次数,默认是-1。表示分割所有。
示例:

>>> str = 'C/C++/Python/Java'
>>> str_split = str.split('/')
>>> print(str_split)
['C', 'C++', 'Python', 'Java']
>>> str_split = str.split('/',1)>>> print(str_split)
['C', 'C++/Python/Java']

另外需要说明的是,如果不指定分隔符,split将以空白符作为分割符。
关于python的split函数还有一个小小的坑。关于这个坑的详细内容请查看博客python字符串split的一个小坑。

2 rsplit

split函数默认是从左向右进行切割的,如果使用num参数指定只切割一次的话,那么就会从字符串传的左侧找到第一个匹配的分隔符进行切分,剩下的部分不再进行切分。
rsplit的意思是right split,就是从右侧进行切分。如果使用num参数指定只切割一次的话,那么就会从字符串传的右侧找到第一个匹配的分隔符进行切分,剩下的部分不再进行切分。

>>> str = 'C/C++/Python/Java'
>>> str_split = str.rsplit('/',1)
>>> print(str_split)
['C/C++/Python', 'Java']

同样,如果不指定分隔符,rsplit将以空白符作为分割符。

3 splitlines

splitlines的功能其实就是根据换行符进行split,其实就是根据\r, \r\n, \n进行分割。这三个都表示换行符,之所以状况,是由不同平台对换行符的定义不同产生的。
下面对不同平台对换行符的定义进行介绍。
我们使用notepad++打开,windows下编辑的文本文档,选择显示所有字符,每行的末尾都会显示- CR LF,而在linux平台下编辑的文本文档,每行的末尾显示为LF。这里的CR和LF是什么意思呢?

  • CR:Carriage Return,对应ASCII中转义字符\r,表示回车
  • LF:Linefeed,对应ASCII中转义字符\n,表示换行
  • CRLF:Carriage Return & Linefeed,\r\n,表示回车并换行
    所以:
  • Windows操作系统采用两个字符来进行换行,即CRLF;
  • Unix/Linux/Mac OS X操作系统采用单个字符LF来进行换行;
  • MacIntosh操作系统(即早期的Mac操作系统)采用单个字符CR来进行换行。

据说之所以产生现在的局面是由历史原因的。

据野史记载,在很久以前的机械打字机时代,CR和LF分别具有不同的作用:LF会将打印纸张上移一行位置,但是保持当前打字的水平位置不变;CR则会将“Carriage”(打字机上的滚动托架)滚回到打印纸张的最左侧,但是保持当前打字的垂直位置不变,即还是在同一行。
当CR和LF组合使用时,则会将打印纸张上移一行,且下一个打字位置将回到该行的最左侧,也就是我们今天所理解的换行操作。
随着时间的推移,机械打字机渐渐地退出了历史舞台,当初的纸张变成了今天的显示器,打字机的按键也演变为了如今的键盘。在操作系统出现的年代,受限于内存和软盘空间的不足,一些操作系统的设计者决定采用单个字符来表示换行符,如Unix的LF、MacIntosh的CR。他们的意图都是为了进行换行操作,只是当初并没有一个国际标准(或者其他原因,鬼知道),所以才有这样字符上的不同。

>>> str = 'C\rC++\nPython\r\nJava'
>>> str_split = str.splitlines()
>>> print(str_split)
['C', 'C++', 'Python', 'Java']

参考文章:

  1. CRLF、CR、LF详解

python中split,rsplit与splitlines作用相关推荐

  1. 技术图文:举例详解Python中 split() 函数的使用方法

    背景 这篇文章主要介绍Python中的split()函数的使用方法,split()函数通常用于将字符串切片并转换为列表,需要的朋友可以参考一下. 技术分析 Python中有split()和os.pat ...

  2. python中split的用法取第二个分片_python中split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

  3. python 中if __name__ = '__main__' 的作用

    python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...

  4. python的用途实例-python中pass语句意义与作用(实例分析)

    想必大家都是刚刚才开始接触python这门语言的,今天这篇文章就来带大家来了解一下python这门语言之中常常会用到的一个语句pass语句.想必大家都很好奇python中pass作用是什么,接下来我就 ...

  5. python中split啥意思_python中split的用法详解_后端开发

    如何用python正则表达式匹配字符串?_后端开发 用python正则表达式匹配字符串的方法:1.当匹配单个位置的字符串时,可以使用[(.+?)]正则表达式来提取:2.当连续多个位置的字符串匹配时,可 ...

  6. python if else语句例子,python 中if else 语句的作用及示例代码

    引入:if-else的作用,满足一个条件做什么,否则做什么. if-else语句语法结构 if 判断条件: 要执行的代码 else: 要执行的代码 判断条件:一般为关系表达式或bool类型的值 执行过 ...

  7. python中split()函数讲解

    python中split()函数讲解 本文讲述的是string.split(s[, sep[, maxsplit]]),针对string类型的split()函数.它主要是切割字符串,结果返回由字符串元 ...

  8. Python中__init__方法有什么作用

    Python中__init__方法有什么作用 当使用类名()的方法去创建对象的时候 python解释器会自动调用__init__方法 因此可以在__init__方法中做一些初始化的设定 在每次创建新对 ...

  9. python中split的用法取第二个分片_python中的split()函数的用法

    函数:split() Python中有split()和os.path.split()两个函数,具体作用如下: split():拆分字符串.通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(li ...

最新文章

  1. Linux 使用者身份與群組記錄的檔案
  2. nginx rewrite重写与防盗链配置
  3. jdk1.8api中文版下载(帮助文档)
  4. centos7下tomcat7 或tomcat8启动超慢原因
  5. PKCS#11 in OP-TEE
  6. USB查看器 USB Device Tree Viewer(UsbTreeView.exe)的使用(重启Intel Realsense摄像头)
  7. 网络编程 数据的封装与解封装过程
  8. MyBatis 源码解读-typeHandlerElement()
  9. 七种常用特征工程技术
  10. 闲谈:我为什么热爱开源
  11. Fragment销毁时replace和add两个方法的区别
  12. Python ASCII码
  13. pcap文件linux怎么打开,pcap文件格式 - 方恨少 - 博客园
  14. 火狐浏览器打印网页不全_打印网页显示不全,求助
  15. Raid磁盘阵列并管理
  16. 人工智能 感情 自我意识
  17. oracle 级联外键,Oracle 级联删除外键
  18. 对账 概念 - 账证核对,账账核对,账实核对,账表核对
  19. druid数据源下 sqlserver 出现 对象名 'xxx' 无效
  20. KubeSphere又开始对接公有云了,这一次是阿里云 SLB

热门文章

  1. 快播放弃视频业务转型区块链,做起了智能区块链手机!
  2. WLAN标准组织介绍
  3. 人工智能成天桥区智能制造突破口
  4. 数据结构课程设计之算术题测试程序
  5. 个人平面设计作品记录
  6. php 可控制几率算法,PHP实现中奖概率算法
  7. 解决!百度云管家使用QQ第三方登录时提示“由于网络原因无法载入页面 请点击刷新后重试”
  8. 优优智能客户关系管理系统UUCRM5.0
  9. Raspberrypi SD卡扩容
  10. CANoe学习笔记(9) 发送模块CAN IG图解