Python - 从字符串创建集合

mau*_*bio 1 python set

我有格式的字符串,"1-3 6:10-11 7-9"从中我想创建数字集,如下所示{1,2,3,6,10,11,7,8,9}.

要从数字范围创建集合,我有以下代码:

def create_set(src):
    lset = []
    if len(src) > 0:
        pos = src.find('-')
        if pos != -1:
            first = int(src[:pos])
            last  = int(src[pos+1:])
        else:
            return [int(src)]  # Only one number
        for j in range (first, last+1): 
            lset.append(j)
        return set(lset)
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚当它出现在字符串中时如何正确处理':'.有人能帮我吗?

提前致谢!

编辑:顺便说一句,有没有一种更简洁的方法来解析这样的字符串,也许使用正则表达式?

xnx*_*xnx 5

这样的事可能适合你:

s = '1-3 6:10-11 7-9'
s = s.replace(':', ' ')
lset = set()
fs = s.split()
for f in fs:
    r = f.split('-')
    if len(r)==1:
        # add a single number
        lset.add(int(r[0]))
    else:
        # add a range of numbers (inclusive of the endpoints)
        lset |= set(range(int(r[0]), int(r[1])+1))
print(lset)
Run Code Online (Sandbox Code Playgroud)