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

需求:
我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如:
s = 'ab;cd|efg|hj,jkl|mn\tpq;rst,uvw\txyz'
其中<,>,<;>,<|>,<\t>都是分隔符号,如何处理?
思路:
1、连续使用str.split()方法,每次处理一种符号
2、使用正则表达式re.split()方法,一次性拆分字符串。推荐方法
代码:
方法一:

def mySplit(s,ds):
    res = [s]

    for d in ds:
        t = []
        list(map(lambda x: t.extend(x.split(d)),res))  #因为map使用res中的每一个元素分别进行切割,返回一个二维的列表,所以需要引入t这个空列表,将二维的列表转成一维的列表,list必须要,否则等到空列表结果
        res = t
        print(res)
    
    return [x for x in res if x ]  #这里是为了防止字字符串中存在连续的两个以上的分隔符造成返回的空字符串的问题,去除结果中的空字符串。

s = 'ab;cd|efg|hj,jkl|mn\tpq;rst,uvw\txyz'

print(mySplit(s,';,|\t'))

方法二:

import re

s = 'ab;cd|efg|hj,jkl|mn\tpq;rst,uvw\txyz'

print(re.split(r'[,;\t|]+',s))  # 这里+号表示至少存在[]中的一种或者一种以上的分隔符
posted @ 2020-07-09 00:12  Richardo-M-Lu  阅读(193)  评论(0编辑  收藏  举报