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

文章目录

  • 字符串分割
    • str.partition()
    • str.split()
    • re.split()
    • splitlines()
  • 路径名分割
    • os.path.splitext()
    • os.path.split()


字符串分割

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')

你可能感兴趣的:(python,函数)