首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从具有数字范围的字符串中获取数字列表

从具有数字范围的字符串中获取数字列表
EN

Stack Overflow用户
提问于 2020-05-27 15:37:58
回答 4查看 286关注 0票数 0

我正试图从字符串中的数字范围中得到一个列表。我如何在Python 3中做到这一点?

我想转换以下字符串:

代码语言:javascript
运行
复制
s = "1-4, 6, 7-10"

列入这份清单:

代码语言:javascript
运行
复制
l = [1, 2, 3, 4, 6, 7, 8, 9, 10]
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-05-27 15:41:25

您可以首先对','字符进行拆分。如果您找到一个值,只需转换为int。如果你找到一个破折号,转换成一个整数的范围。

代码语言:javascript
运行
复制
def listify(s):
    output = []
    for i in s.split(','):
        if '-' in i:
            start, stop = [int(j) for j in i.split('-')]
            output += list(range(start, stop+1))
        else:
            output.append(int(i))
    return output

>>> listify("1-4, 6, 7-10")
[1, 2, 3, 4, 6, 7, 8, 9, 10]
票数 2
EN

Stack Overflow用户

发布于 2020-05-27 15:45:46

你有一个可以有int或者范围的列表,

您可以迭代并单独处理它们。

代码语言:javascript
运行
复制
In [8]: series = []

In [9]: for token in "1-4, 6, 7-10".split(","):
   ...:     token = token.strip()
   ...:     if token.isnumeric():
   ...:         series.append(int(token))
   ...:     else:
   ...:         s, e = tuple(map(int, token.split("-")))
   ...:         # splits "4-6" and converts to int
   ...:         series.extend(list(range(s, e+1)))
   ...:

In [10]: series
Out[10]: [1, 2, 3, 4, 6, 7, 8, 9, 10]
票数 0
EN

Stack Overflow用户

发布于 2020-05-27 15:55:03

如下所示:

代码语言:javascript
运行
复制
s = "3-12, 7, 1, 3-6"
d = []
for l in s.split(', '):
    if '-' in l:
        q = l.split('-')
        for n in range(int(q[0]),int(q[1])+1):
            d.append(n)
    else:
        d.append(int(l))
print(d)

输出:

代码语言:javascript
运行
复制
[3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 7, 1, 3, 4, 5, 6]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62047044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档