为了账号安全,请及时绑定邮箱和手机立即绑定

Pyqt范围输入小部件和Python范围

Pyqt范围输入小部件和Python范围

海绵宝宝撒 2021-03-23 17:13:28
我想像在MS Office或OOo打印对话框中那样创建pyqt小部件,该小部件允许输入范围的集合,例如"1, 3-4, 7-9"。python是否有内置工具或第三方软件包可将此类字符串转换为列表?例如:"1, 3-4, 7-9" => [1,3,4,7,8,9]ps:这个小部件的调用方式是什么?
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

不确定是否有内置软件包或第三方软件包可用于此目的,但应执行以下操作:


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]


查看完整回答
反对 回复 2021-03-30
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

制作了没有itertools的我自己的版本。


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'))

请记住,使用正则表达式检查此字符串会很健康。


查看完整回答
反对 回复 2021-03-30
  • 2 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信