参考:菜鸟教程 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')
参考:菜鸟教程 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()方法可以一次性分割多个分隔符,返回分割后的列表。
代码示例:
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表示非字母字符,+表示重复前面的字符。正则表达式内容比较多,可自行查看。
参考:菜鸟教程 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(path)
分割路径,返回路径名和文件扩展名的元组
代码示例:
str1 = "E:/code-study/python/test.py"
res = os.path.splitext(str1)
print(res)
结果如下:
('E:/code-study/python/test', '.py')
从结果可以看出该函数主要目的是分离文件扩展名。
os.path.split(path)
分割路径,返回一个元组,包含路径名和文件名。
代码示例:
str1 = "E:/code-study/python/test.py"
res = os.path.split(str1)
print(res)
分割结果:
('E:/code-study/python', 'test.py')