2 回答

TA贡献1852条经验 获得超1个赞
不确定是否有内置软件包或第三方软件包可用于此目的,但应执行以下操作:
from itertools import chain
def my_range(*args):
args = map(int,args)
if len(args) == 1:
return args
return range(args[0], args[1]+1)
def func(strs):
return list(chain.from_iterable(my_range(*x.split('-')) for x in strs.split(', ')))
strs = "1, 3-4, 7-9"
print func(strs)
#[1, 3, 4, 7, 8, 9]

TA贡献1813条经验 获得超2个赞
制作了没有itertools的我自己的版本。
def expander(inpt):
ret = []
for token in inpt.split(','):
if '-' in token:
a, b = token.strip().split('-')
ret.extend(range(int(a), int(b)+1))
else:
ret.append(int(token))
return ret
print(expander('1, 3-4, 7-9'))
请记住,使用正则表达式检查此字符串会很健康。
添加回答
举报