对于分割字符床,我们通常想到的都是运用字符串中的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']
由此可见第二种方法比较方便迅捷,我个人推荐的也是第二种方法。