当前位置 博文首页 > python list使用示例 list中找连续的数字

    python list使用示例 list中找连续的数字

    作者:admin 时间:2021-06-19 19:29

    线上有个需求,格式化,从一堆s1,s100-s199中找出连续的服并且格式化显示出来,如:

    神魔:S106-109,s123,s125
    御剑: s106-109,s123,s125

    复制代码 代码如下:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    #  2014/01/15 14:15
    import sys
    from itertools import *
    from operator import itemgetter
    def parse(filename):
        d = {}
        for line in open(filename, 'r'):
            _line = line.split()
            d.setdefault(_line[0], []).append(_line[1])
        for key in d.keys():
            data = sorted(map(lambda x: int(x[1:]), d[key]))
            sys.stdout.write(key + " ")
            for k, g in groupby(enumerate(data), lambda (i, x): i - x):
                ret = map(itemgetter(1), g)
                if len(ret) > 1:
                    sys.stdout.write("S%d-%d," % (ret[0], ret[-1]))
                elif len(ret) == 1:
                    sys.stdout.write(str("S%s") % ret[0] + ",")
            sys.stdout.write('\n')
    if __name__ == "__main__":
        filename = sys.argv[1]
        parse(filename)

    js