您好,我想优雅地将4-6类型的子字符串扩展为4,5,6类型的更大的字符串,如
s = "235:2,4,6-9,12,14-19;240:3,5-9,10;245:4,9,10-15,18"
print expand(s)
235:2,4,6,7,8,9,12,14,15,16,17,18,19;240:3,5,6,7,8,9,10;245:4,9,10,11,12,13,14,15,18使用Python。
有没有一些正则表达式、伏都教或类似的东西?非常感谢!
发布于 2013-04-10 13:43:14
您可以执行以下操作:
>>> import re
>>> def repl(match):
... start, end = match.groups()
... return ','.join(str(i) for i in range(int(start), int(end)+1))
...
>>> re.sub(r'(\d+)-(\d+)', repl, "235:2,4,6-9,12,14-19;240:3,5-9,10;245:4,9,10-15,18")
'235:2,4,6,7,8,9,12,14,15,16,17,18,19;240:3,5,6,7,8,9,10;245:4,9,10,11,12,13,14,15,18'这利用了这样一个事实,即re.sub的repl参数可以是一个可调用参数,该参数将匹配项作为参数并返回替换字符串。
然后expand(s)函数将是:
import re
def repl(match):
start, end = match.groups()
return ','.join(str(i) for i in range(int(start), int(end)+1))
def expand(s):
return re.sub('(\d+)-(\d+)', repl, s)https://stackoverflow.com/questions/15917814
复制相似问题