Skip to main content
 首页 » 编程设计

Python之从字符串创建集合

2025年05月04日25langtianya

我有格式为 "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) 

但我不知道如何正确处理出现在字符串中的“:”。有人可以帮助我吗?

提前致谢!

编辑:顺便说一句,是否有更紧凑的方法来解析此类字符串,也许使用正则表达式?

请您参考如下方法:

这样的东西可能对你有用:

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)