字符串提取数字

如何编程解决从字符串“2-4,6,8-10,12-18”提取数字,如:2 3 4 6 8 9 10 12 13 14 15 16 17 18。

Jason990420
最佳答案
string = '2-4,6,8-10,12-18'

result = []
for sub_string in string.split(','):
    if '-' in sub_string:
        start, stop = tuple(map(int, sub_string.split('-')))
        result += list(range(start, stop+1))
    else:
        result.append(int(sub_string))
print(result)
[2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18]
1年前 评论
讨论数量: 4

逗号分割,遍历,在-分割,获取头尾用range获取

1年前 评论

假设你的结果里,忘记写了 9

Python 代码

import re
from itertools import chain, starmap

list(chain.from_iterable(starmap(
    lambda a, b: range(int(a), int(b if len(b) else a) + 1),
    re.findall(r'(\d+)(?:-(\d+))?', '2-4,6,8-10,12-18')
)))

结果

[2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18]
1年前 评论
Jason990420
string = '2-4,6,8-10,12-18'

result = []
for sub_string in string.split(','):
    if '-' in sub_string:
        start, stop = tuple(map(int, sub_string.split('-')))
        result += list(range(start, stop+1))
    else:
        result.append(int(sub_string))
print(result)
[2, 3, 4, 6, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18]
1年前 评论

如果这些字串是excel表中某一列,如何计算结果插入新的列?

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!