如何拆分含有多种分隔符的字符串

对于分割字符床,我们通常想到的都是运用字符串中的split()方法来进行分割,但是此种方法只能分割单一分割符。比如:对于多个分割符的字符串s,我们如果用split的方法进行分割时就会报错:

s='ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
t=s.split('; | , \t')

E:\Anaconda\python.exe E:/Anaconda/MVSA_Single/data_processing.py

Process finished with exit code 0

没有任何的输出结果。

对此,我们有两种的解决方法,一种是连续使用split()的方法,每次分割一个分隔符。另一种是使用正则表达式的re.split()方法,一次性的分隔字符。

首先是第一种方法的实践结果:

先对‘;’进行分隔:

t=s.split(';')

结果是:

['ab', 'cd|efg|hi,jkl|mn\topq', 'rst,uvw\txyz']

由于此时得到的是一个列表,因此我们不能直接对其运用split()方法进行分割。

我们创建一个map()函数,然后对”|“分割:

res=map(lambda x:x.split('|'),t)

最终以此类推等到最后的结果:['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']。

接下来就是第二种分割方法,运用re.split()方法进行分割:

res=re.split(r'[,;|\t]+',s)
print(res)
最终结果是:

['ab', 'cd', 'efg', 'hi', 'jkl', 'mn', 'opq', 'rst', 'uvw', 'xyz']

由此可见第二种方法比较方便迅捷,我个人推荐的也是第二种方法。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值