• multiple delimiters


    re module version

    import re
    
    
    string_out = """ace, bda; des; edf;fsa; gas;   ace
    b
    e"""
    
    
    
    def split_re(origin_string='', separators=','):
    
        origin_list = re.split(r'[%s]' % separators, origin_string)
    
        # if you also want the delimiters:
        # origin_list = re.split(r'([%s])' % separators, origin_string)
    
        total_list = []
        for data in origin_list:
            if data != '' and data not in total_list:
                total_list.append(data)
    
        return total_list
    
    
    result = ','.join(split_re(string_out, '
    ,+;;,、 '))
    
    print(result)
    
    

    my version

    string_out = """ace, bda; des; edf;fsa; gas;   ace
    b
    e"""
    
    
    def split_simple(origin_string='', separators=','):
        origin_list = [origin_string]
    
        # get different list from different separator
        for sep in separators:
    
            sep_list = []
            for r in origin_list:
                for i in r.split(sep):
                    sep_list.append(i.strip())
    
            origin_list = sep_list
    
        # remove none and repeat value
        total_list = []
        for index, data in enumerate(origin_list):
            if index == len(origin_list):
                break
            else:
                if data != '' and data not in total_list:
                    total_list.append(data)
    
        return total_list
    
    
    result = ','.join(split_simple(string_out, '
    ,+;;,、 '))
    
    print(result)
    
    
    

    Python 3 version

    from functools import reduce
    
    
    def split_by_separator(origin_string='', separators=','):
        origin_list = [origin_string]
        for sep in separators:
            tmp_each = []
            for r in origin_list:
                tmp_each.extend(map(lambda x: x.strip(), r.split(sep)))
                print('tmp_each: ', tmp_each)
            origin_list = tmp_each
        tmp_total = []
        [tmp_total.append(data) for data in origin_list if data != '']
        return reduce(lambda x, y: y in x and x or x + [y], [[], ] + tmp_total)
    
    
    string_out = ' ;vickey; hello; world; hey;how; are; 
    a、b,cd'
    
    result = ','.join(split_by_separator(string_out, '
    ,+;;,、'))
    
    print(result)
    
    

    Python 2 version

    #!/usr/bin/env python
    # _*_ coding: utf-8 _*_
    # @Time     : 2017/3/9 19:52
    # @Author   : otfsenter
    # @File     : a.py
    
    #coding:utf-8
    
    result = '''
    sdf-asd
    sdf-asd01
    sdf-asd02
    sdf-asd,sdf-asd01 ,sdf-asd02
    aui+otfsenter+which
    '''
    
    # result = ''
    # with open('tmp.txt', 'r') as f:
    #     for i in f:
    #         result += i
    #
    # print result
    
    def split_by_separator(string='', separators=','):
        rst = [string]
        for sep in separators:
            tmp = []
            for r in rst:
                tmp.extend(map(lambda x: x.strip(), r.split(sep)))
            rst = tmp
        list_tmp = []
        [list_tmp.append(data) for data in rst if data != '']
        return reduce(lambda x, y: y in x and x or x + [y], [[], ] + list_tmp)
    
    print split_by_separator(result, '
    ,+')
    
    
  • 相关阅读:
    Java并发编程的艺术(二)——volatile、原子性
    Java并发编程的艺术(一)——并发编程的注意问题
    算法——朋友圈(并查集)
    算法——汉诺塔问题
    算法——接雨水
    算法——n皇后问题
    深入理解Java虚拟机(八)——类加载机制
    深入理解Java虚拟机(七)——类文件结构
    转-项目管理5阶段|一位高级项目经理的4年项目经验分享
    什么是信息系统项目管理师(高级项目经理)
  • 原文地址:https://www.cnblogs.com/otfsenter/p/6544416.html
Copyright © 2020-2023  润新知