我有一个字符串看起来(请注意我给的范围是1.1到1.3),
"1.1-1.3 ,1.5, 2.5"
我想要一个看起来像的二维数组
[1][1],
[1][2] , <== range is filled now
[1][3] ,
[1][5],
[2][5],
我对Python不太满意。我知道必须有一个更好的方法来完成这几行代码。有人可以帮忙吗?我正在使用3.4
答案 0 :(得分:1)
点子:
'1.1-1.3 ,1.5, 2.5'
'1.1-1.3,1.5,2.5'
[(1, 1, 1, 3), (1, 5), (2, 5)]
[[1, 1], [1, 2], [1, 3], [1, 5], [2, 5]]
代码:
import re
s = '1.1 -1.3 ,1.5, 2.5'
items = s.replace(' ', '').split(',')
result = []
for item in items:
v = list(map(
lambda x: int(x) if x else None,
re.match(r'(\d+).(\d+)(?:-(\d+).(\d+))?', item).groups()
))
if not v[2]:
result.append(v[:2])
else:
result.extend([[v[0], i] for i in range(v[2], v[3] + 1)])
print(result)