zoukankan      html  css  js  c++  java
  • 【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']
    >>> 
  • 相关阅读:
    JavaScript三元运算符
    JavaScript相等运算符
    SQL 查询优化
    C# 平时碰见的问题【2】
    android 利用TrafficStats类获取本应用的流量
    android 输出.txt 文本换行问题
    【转载】input 中 type='text' 的提交问题
    Pycharm 使用 (一)
    SqlBulkCopy 插入100W条数据时 属性BatchSize的作用
    C# 平时碰见的问题【1】
  • 原文地址:https://www.cnblogs.com/apple2016/p/5767294.html
Copyright © 2011-2022 走看看