• 【python cookbook】【字符串与文本】1.针对任意多的分隔符拆分字符串


    问题:将分隔符(以及分隔符之间的空格)不一致的字符串拆分为不同的字段;

    解决方案:使用更为灵活的re.split()方法,该方法可以为分隔符指定多个模式。

    说明:字符串对象的split()只能处理简单的情况,而且不支持多个分隔符,对分隔符周围可能存在的空格也无能为力。

    # example.py
    #
    # Example of splitting a string on multiple delimiters using a regex
    
    import re  #导入正则表达式模块
    
    line = 'asdf fjdk; afed, fjek,asdf,      foo'
    
    # (a) Splitting on space, comma, and semicolon
    parts = re.split(r'[;,s]s*', line)
    print(parts)
    
    # (b) 正则表达式模式中使用“捕获组”,需注意捕获组是否包含在括号中,使用捕获组导致匹配的文本也包含在最终结果中
    fields = re.split(r'(;|,|s)s*', line)
    print(fields)
    
    # (c) 根据上文的分隔字符改进字符串的输出
    values = fields[::2]
    delimiters = fields[1::2]
    delimiters.append('')
    print('value =', values)
    print('delimiters =', delimiters)
    newline = ''.join(v+d for v,d in zip(values, delimiters))
    print('newline =', newline)
    
    # (d) 使用非捕获组(?:...)的形式实现用括号对正则表达式模式分组,且不输出分隔符
    parts = re.split(r'(?:,|;|s)s*', line)
    print(parts)
    >>> ================================ RESTART ================================
    >>> 
    ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
    ['asdf', ' ', 'fjdk', ';', 'afed', ',', 'fjek', ',', 'asdf', ',', 'foo']
    value = ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
    delimiters = [' ', ';', ',', ',', ',', '']
    newline = asdf fjdk;afed,fjek,asdf,foo
    ['asdf', 'fjdk', 'afed', 'fjek', 'asdf', 'foo']
    >>> 
  • 相关阅读:
    Docker实践之03-Dockerfile指令详解
    Docker实践之02-使用镜像及定制
    通过Hack方式实现SDC中Stage配置联动刷新
    多级部门查询性能问题解决方案
    Docker实践之01-入门介绍
    从阿里腾讯2朵云产品中学到的用户体验
    HttpClient在多线程环境下踩坑总结
    一次对JDK进行"减肥"的记录
    北京西站如何进站接人
    多实例集群部署下的图片上传和访问
  • 原文地址:https://www.cnblogs.com/apple2016/p/5767294.html
Copyright © 2020-2023  润新知