m = re.match(r'(\d+)(?:-(\d+))?$', string)
start = m.group(1)
end = m.group(2) or start
return list(range(int(start, 10), int(end, 10) + 1))
现在它能够处理以下格式的字符串并将它们转换成列表...
'0-6' 结果为 [0,1,2,3,4,5,6]
'7' 结果为 [7]
无论如何我可以更改符号以能够处理以下格式的字符串...
'1 2 3 4 5' 结果为 [1,2,3,4,5]
最佳答案
正则表达式并不是生活的全部。在这种情况下,真的没有理由使用正则表达式。试试这个,它的速度是示例数据 '0-6 2 3-6'
上 Shawn Chin 的 to_num_list
的两倍以上(对于我尝试过的所有数据它的速度大约是原来的 1.9 到 4.5 倍):
def included_numbers(s):
out = []
for chunk in s.split():
if '-' in chunk:
f, t = chunk.split('-')
out.extend(range(int(f), int(t)+1))
else:
out.append(int(chunk))
return out
关于python - 如何将不同格式的字符串转换为 int 列表? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6585266/