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

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

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

ps:这个小部件的调用方式是什么?


海绵宝宝撒
浏览 153回答 2
2回答

小怪兽爱吃肉

不确定是否有内置软件包或第三方软件包可用于此目的,但应执行以下操作:from itertools import chaindef 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]

慕姐8265434

制作了没有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 retprint(expander('1, 3-4, 7-9'))请记住,使用正则表达式检查此字符串会很健康。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python