首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pyqt范围输入小部件和python范围

Pyqt范围输入小部件和python范围
EN

Stack Overflow用户
提问于 2013-06-05 16:58:30
回答 2查看 503关注 0票数 0

我想创建像在MS Office或OOo打印对话框中一样的pyqt小工具,允许输入范围集,如"1, 3-4, 7-9"。python是否有内置的工具或第三方包来将这些字符串转换为列表?例如:

代码语言:javascript
运行
复制
"1, 3-4, 7-9" => [1,3,4,7,8,9]

ps:这个小部件是如何调用的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-05 17:16:20

我不确定有没有内置的或者第三方的包可以用,但是像下面这样的东西应该可以做到:

代码语言:javascript
运行
复制
from itertools import chain
def my_range(*args):
    args = map(int,args)                                                               
    if len(args) == 1:
        return args
    return range(args[0], args[1]+1)

def func(strs):
    return list(chain.from_iterable(my_range(*x.split('-')) for x in strs.split(', ')))
strs = "1, 3-4, 7-9"
print func(strs)
#[1, 3, 4, 7, 8, 9]
票数 1
EN

Stack Overflow用户

发布于 2013-06-06 03:24:35

制作了我自己的不带itertools的版本。

代码语言:javascript
运行
复制
def expander(inpt):
    ret = []
    for token in inpt.split(','):
        if '-' in token:
            a, b = token.strip().split('-')
            ret.extend(range(int(a), int(b)+1))
        else:
            ret.append(int(token))
    return ret

print(expander('1, 3-4, 7-9'))

请记住,使用regex检查此字符串将是健康的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16935634

复制
相关文章

相似问题

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