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

时间:2013-06-05 08:58:30

标签: python qt pyqt

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

"1, 3-4, 7-9" => [1,3,4,7,8,9]

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

2 个答案:

答案 0 :(得分: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]

答案 1 :(得分:0)

制作我自己的版本,没有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'))

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