一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第20天,点击查看活动详情。
0 环境
- 编辑器:idea
- 系统版本:win10
- python版本:3.9.6
1 rsplit
rsplit是另一个split的,split从左开始到右分割,rsplit(我的理解 right split)从右开始到左分割。可以想像一下,这里有一排的肉,有的人从左开始吃,有的人从右开始吃,方向不同,但是目的都是吃肉。split和rsplit用法基本相同。
def str_demo():
s = "a b c d"
print("s ==>", s.rsplit(maxsplit=1))
2 splitlines
虽然简单,但用处大,比如前端上传文件给后端,后端读到文件后,想快速分割行,用它就很合适
def str_demo():
s = '''你
好
呀'''
print("s ==>", s.splitlines())
按行分割(True)
def str_demo():
s = '''你
好
呀'''
print("s ==>", s.splitlines())
print("s ==>", s.splitlines(True))
3 partition
partition可以作为split指定分隔符,且maxsplit=1的特制版。
返回一个ie三元组(括号里有三个元素),且入参的分隔符只能分割一次(maxsplit=1),返回结果组成成分(head,sep, tail)。
def str_demo():
s = 'a\nb\ncdef\n'
print(s.partition(' '))
print(s.partition('\n'))
比如django中settings里的配置,如下代码, 假设它是字符串,我想切割成 OPTIONS : {xxx},而下面:不受影响,还是context_processors : [xxx],用这个方法是不是很开心。
s = "OPTIONS: {'context_processors': ['django.template.context_processors.debug','django.template.context_processors.request','django.contrib.auth.context_processors.auth','django.contrib.messages.context_processors.messages',],}"
print(s.partition(':'))
还有rpartition,从右到左。
4 总结
字符串的分割讲述了5个函数,看着挺多的,其实真正需要掌握三个函数就可以了,split属于全能侠,以什么字符/字符串匹配着切,默认切割的次数是全部切,也可以按次数切等等方式,rsplit基本方式和split一样,无非从左往右,从右往左,方向不同。splitlines切割行用的,很有用,常用读文件。partiton由于切出是个三元组,且它属于split的特制版,次数只能切割一次,很适合用于key =或:等 value,不需要但value中有字符和=或者:等重复,误杀的现象。