python--python中的各种“分割”(分隔)


字符串分割

str.partition()

参考:菜鸟教程 python partition()

str.partition(str)

partition() 方法用来根据指定的分隔符将字符串进行分割。
如果字符串包含指定的分隔符,则返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。
代码示例:

str1 = "E:/code-study/python/test.py"
res = str1.partition('.')
print(res)

执行结果:

('E:/code-study/python/test', '.', 'py')

str.split()

参考:菜鸟教程 python split()

str.split(str="", num=string.count(str))

split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串。注意使用格式中的str指代字符串。返回分割后的字符串列表。
代码示例:

str1 = "E:/code-study/python/test.py"
res = str1.split('/')
res2 = str1.split('/', 1)
print(res)
print(res2)

分割结果:

['E:', 'code-study', 'python', 'test.py']
['E:', 'code-study/python/test.py']

re.split()

re.split()方法可以一次性分割多个分隔符,返回分割后的列表。
代码示例:

import re
str = 'runoob,.runoob,.runoob,.'
res = re.split(',.', str)
print(res)

结果:

['runoob', 'runoob', 'runoob', '']

还有一种方法是通过正则表达式(参考:菜鸟教程 Ruby正则表达式),如下所示:

import re
str = 'runoob,.runoob,.runoob,.'
res = re.split('\W+', str)
print(res)

结果也是一样的:

['runoob', 'runoob', 'runoob', '']

\W表示非字母字符,+表示重复前面的字符。正则表达式内容比较多,可自行查看。

splitlines()

参考:菜鸟教程 python splitlines

str.splitlines([keepends])

splitlines() 按照行(’\r’, ‘\r\n’, \n’)分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。
代码示例:

str1 = "Hello world!\nGood morning!\n"
res = str1.splitlines()

print(res)

运行结果:

['Hello world!', ' Good morning!']

这里需要插入一个小插曲,菜鸟教程中给了一个字符串 ‘abc\n\nde fg\rk1\r\n’,打印结果为:

abc

k1 fg

很奇怪对不对,笔者开始也觉得哪里不对。后来研究了一下,原来是因为“\r”不是换行符,是光标调至开头的意思。在打印的时候,因为没有换行,且“k1”打印的时候从开头开始,于是覆盖了之前打印的“de”。

路径名分割

os.path.splitext()

os.path.splitext(path)

分割路径,返回路径名和文件扩展名的元组

代码示例:

str1 = "E:/code-study/python/test.py"
res = os.path.splitext(str1)
print(res)

结果如下:

('E:/code-study/python/test', '.py')

从结果可以看出该函数主要目的是分离文件扩展名。

os.path.split()

os.path.split(path)

分割路径,返回一个元组,包含路径名和文件名。
代码示例:

str1 = "E:/code-study/python/test.py"
res = os.path.split(str1)

print(res)

分割结果:

('E:/code-study/python', 'test.py')
  • 14
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值