嗨,我想将 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。
是否有一些正则表达式伏都教或类似的?非常感谢!
你可以做:
>>> 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'
这使用了repl
参数 tore.sub
可以是一个可调用的事实,它将匹配项作为参数并返回替换字符串。
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)