def dashrange(s):
if "-" in s:
a, b = map(int, s.split("-"))
return range(a, b + 1)
return [int(s)]
def range_to_list(s):
return [j for i in s.split(",") for j in dashrange(i)]
import re
range_expr = '1-4,6,9-11'
ranges = []
for r in re.finditer(r'\d+(?:-\d+)?(?=(,|\Z))', range_expr):
if '-' in r.group(0):
l = list(map(int, r.group(0).split('-')))
l[1] += 1
ranges.extend(list(range(*l)))
else:
ranges.append(int(r.group(0)))
print(ranges)
re.match(r'(\s*\d+(?:\s*-\s*\d+)?(?:(\s*,\s*|\s*\Z)))+$', range_expr)
- and -
for r in re.finditer(r'\s*\d+(?:\s*-\s*\d+)?(?=(\s*,\s*|\s*\Z))', range_expr):
您可以使用以下功能:
印刷品:
印刷品:
验证范围并允许空白:
您可以首先使用以下方法测试提供的范围的有效性:
如果要允许空白:
相关问题 更多 >
编程相关推荐