从入门到精通:Python字符串分割指南

本文详细介绍了在Python中使用split(),re.split()函数以及os.path模块的split和splitext方法进行字符串拆分的操作,包括基础用法、正则表达式应用、指定次数分割和文件路径处理。
摘要由CSDN通过智能技术生成

🍀 前言

博客地址:

👋 简介

使用字符串时,常见的操作之一是使用给定的分隔符将字符串拆分为子字符串数组。在本文中,我们将讨论如何在Python中拆分字符串。

📖 正文

1 split

str.split(s, num)[n]
参数说明:

  • s:表示指定的分隔符,不写的话,默认是空格(’ ‘)。如果字符串中没有给定的分隔符时,则把整个字符串作为列表的一个元素返回。
  • num:表示分割次数。如果指定了参数num,就会将字符串分割成num+1个子字符串,并且每一个子字符串可以赋给新的变量。
    [n]:表示选取第n个分片,n表示返回的list中元素下标,从0开始的。
1.1 基础用法
text = "a,b,c,d"
res = text.split(",")
print(res)  
# ['a', 'b', 'c', 'd']
1.2 指定次数分割
text = "a,b,c,d"
res = text.split(",", 1)
print(res)
# ['a', 'b,c,d']

2 re.split

re.split(pattern, string, maxsplit=0, flags=0)

  • pattern:相当于str.split()中的sep,分隔符的意思,不但可以是字符串,也可以为正则表达式: ‘[ab]’,表示的意思就是取a和b的任意一个值
  • string:要进行分割的字符串
  • maxsplit:分割的最大次数,这个参数和str.split()中有点不一样:默认值为0,表示分割次数无限制,能分几次分几次;取负数,表示不分割;若大于0,表示最多分割maxsplit次;
  • flags:该参数可以用来修改pattern表达式的功能,比如忽略大小写 re.IGNORECASE(简写:re.I),即当flags = re.IGNORECASE ,pattern = [A-Z]不但能匹配到大写字母,也能匹配到小写字母,默认值为0
2.1 maxsplit小于0

maxsplit<0,表示不分割

import re

s = '1,2,3,4,a,5,6,7,8,c,9,10,11,12'
print(re.split(r',[a-z],', s, maxsplit=-2, flags=0))
# ['1,2,3,4,a,5,6,7,8,B,9,10,11,12']
2.2 maxsplit等于0

maxsplit = 0,表示能分几次分几次

import re

s = '1,2,3,4,a,5,6,7,8,c,9,10,11,12'
print(re.split(r',[a-z],', s, maxsplit=0))
# ['1,2,3,4', '5,6,7,8', '9,10,11,12']
2.3 maxsplit大于0

maxsplit = 1, 表示分割一次

import re

s = '1,2,3,4,a,5,6,7,8,c,9,10,11,12'
print(re.split(r',[a-z],', s, maxsplit=1))

# ['1,2,3,4', '5,6,7,8,B,9,10,11,12']
2.4 flags

当flags的默认值0修改为re.IGNORECASE,表示忽略大小写

import re

s = '1,2,3,4,a,5,6,7,8,E,9,10,11,12'
print(re.split(r',[a-z],', s, maxsplit=0))
# ['1,2,3,4', '5,6,7,8,E,9,10,11,12']
print(re.split(r',[a-z],', s, maxsplit=0, flags=re.IGNORECASE))
# ['1,2,3,4', '5,6,7,8', '9,10,11,12']

3 splitlines

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

text = "Line 1\nLine 2\nLine 3\nLine 4"

print(text.splitlines())
# ['Line 1', 'Line 2', 'Line 3', 'Line 4']
print(text.splitlines(True))
# ['Line1\n', 'Line 2\n', 'Line 3\n', 'Line 4']

4 os.path

4.1 os.path.split

分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在
os.path.split(‘PATH’)
PATH指一个文件的全路径作为参数:
如果给出的是一个目录和文件名,则输出路径和文件名
如果给出的是一个目录名,则输出路径和为空文件名

import os

print(os.path.split('/Users/michael/testdir/file.txt'))
# ('/Users/michael/testdir', 'file.txt')

print(os.path.split(r'D:\01 programming\02message\file.txt'))
# ('D:\\01 programming\\02message', 'file.txt')
4.2 os.path.splitext

分离文件名与扩展名,返回(f_name, f_extension)元组
os.path.splitext(‘PATH’)

import os

print(os.path.splitext('/Users/michael/testdir/file.txt'))
# ('/Users/michael/testdir/file', '.txt')
print(os.path.splitext(r'D:\01 programming\02message\file.txt'))
# ('D:\\01 programming\\02message\\file', '.txt')

💖 欢迎我的关注公众号

在这里插入图片描述

  • 24
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值