Python拆分含有多种分隔符的字符串

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

        实际案例:

        我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,   

    例如:s = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
    其中"<,><;><|><\t>"都是分隔符号,如何处理

        解决方案:

                方法1:连续使用str.split()方法,每次处理一种分隔符号。

                方法2:使用正则表达式的re.split()方法,一次性拆分字符串。

2、代码演示

# 单一分隔符
str1 = 'root 12125 0.0 0.0 33679596 904 ?? SNs 五02下午' \
       ' 0:00.01 /usr/libexec/per'
print(str1.split())
'''
 str.spilt用法介绍:
    split(sep=None, maxsplit=-1) -> list of  strings
    seq为分隔符参数默认为空白字符(whitespace),包含空格、制表符(\t)、换行(\n)、回车(\r)
    seq不同同时传入多个分隔符,只能每次传入一种
'''


# 多种不同的分隔符
# 方法1:连续多次使用str.split方法,每次处理一种分隔符
def my_split(s, ds):
    #  s1:待分隔字符串,ds:包含所有分隔符的字符串
    """
     需要注意有种情形是连续两个分隔符,如'i,,j'
     列表中会出现空字符串,此时就需要对结果进行过滤。
    """
    res = [s]
    for d in ds:
        t = []
        list(map(lambda x: t.extend(x.split(d)), res))
        res = t
    # 使用列表解析过滤空字符串
    return [x for x in res if x]


s1 = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
print(my_split(s1, ';,|\t'))

# 方法2(推荐):使用正则表达式re.split
'''
    re.split方法介绍:
        split(pattern, string, maxsplit=0, flags=0)
        pattern为正则表达式,可以使用正则进行多种分隔符切割
'''
import re

s2 = 'ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
# 中括号中为分隔符,+号表示前面字符1个或多个
str2 = re.split('[,;\t|]+', s2)
print(str2)

'''
 需要注意的是,对于单一分隔符的情况使用str.split效率会更快一些,
 但是不能同时处理多个分隔符,对于多个分隔符情况使用re.split。
'''

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值