Posted in Python onJanuary 27, 2014
线上有个需求,格式化,从一堆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)
python list使用示例 list中找连续的数字
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@