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

作者: SmallRookie | 来源:发表于2017-08-01 21:02 被阅读38次
实际案例

我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如:
  s='ab;cd|efg|hi,jkl|mn\topq;rst,uvw\txyz'
其中<,>, <;>, <|>, <\t>都是分隔符号,如何处理?

解决方案:

  • 连续使用str.split(),每一次处理一种分隔符号;
  • 使用正则表达式的re.split(),一次性拆分字符串。

我们先使用方法一看看处理效果是否满足实际案例需求,其代码如下所示:

# -*- coding: utf-8 -*-

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

    for d in ds:
        t = []
        map(lambda x: t.extend(x.split(d)), res)
        res = t
        
    return res

if __name__ == "__main__":

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

其输出结果为:

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

虽然,我们将分隔符号给处理掉了, 但如果有两个连续的分隔符号,这种方法就会出现异常,如:s='ab;cd|efg|hi,,;jkl|mn\topq;rst,uvw\txyz',其运行结果如下:

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

我们会发现结果列表中多出两个空字符。假设我们需要不含空字符的结果列表,那么我们又要对结果列表中的空字符进行处理,其代码如下:

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

    for d in ds:
        t = []
        map(lambda x: t.extend(x.split(d)), res)
        res = t
        
    return [x for x in res if x]

其输出结果为:

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

因此, 我们这里推荐采用方法二对分隔符进行处理,其代码如下:

# -*- coding: utf-8 -*-

import re

s = 'ab;cd|efg|hi,,;jkl|mn\topq;rst,uvw\txyz'

print re.split(r'[,;\t|]+', s)

其输出结果为:

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

注:代码中字符串前添加r时为了防止'\t'这种转义字符被转义。关于正则表达式部分此处不详细说明,如有兴趣可参考菜鸟教程网

通过上述两个方法,我们可以了解到:当我们处理单个分隔符时,推荐使用str.split();当我们对多个分隔符进行处理时,推荐使用re.split()。

相关文章

  • Python学习,python字符串的处理

    一、拆分含有多种分隔符的字符串 1.如何拆分含有多种分隔符的字符串 问题: 我们要把某个字符串依据分隔符号拆分不同...

  • python高级编程技巧(5)

    一. 如何拆分含有多种分隔符的字符串 实际案例: 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不...

  • 字符串处理案例进阶训练

    课纲如下: 如何拆分含有多种分隔符的字符串 如何判断字符串a是否以字符串b开头或结尾 如何调整字符串中文本的格式 ...

  • Python技巧:字符串处理

    Welcome To My Blog 一.拆分含有多种分隔符的字符串 使用.split()注意list.exten...

  • String常用方法

    一、拆分分隔符的字段 当一个字符串中含有多种分隔符,希望把其中的元素拆分出来时,可以使用split 判断一个字符串...

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

    实际案例 我们要把某个字符串依据分隔符号拆分不同的字段,该字符串包含多种不同的分隔符,例如:s='ab;cd|ef...

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

    问题我们要把某个字符串依据分割符号拆分不通的字段,该字符串包含多种不通的分隔符,例如:s = 'ab;cd|gaj...

  • Python超详细的字符串用法大全

    本文要点 字符串拼接 拆分含有多种分隔符的字符串 判读字符串a是否以字符串b开头或结尾 调整字符串中文本的格式 对...

  • 超详细的字符串用法大全

    本文要点 字符串拼接 拆分含有多种分隔符的字符串 判读字符串a是否以字符串b开头或结尾 调整字符串中文本的格式 对...

  • 3-1字符串的拆分、匹配和替换

    如何拆分多种分隔符的字符串 字符串对象str.split()方法只能处理非常简单的情况,而且不支持多个分割符,对分...

网友评论

    本文标题:如何拆分含有多种分隔符的字符串

    本文链接:https://www.haomeiwen.com/subject/xflslxtx.html