Python字符串拆分组合

时间:2015-11-16 14:07:38

标签: python string combinations

我有一个像123[4-6][1-2]这样的字符串,我想要一个能给我列出所有组合的函数:

['12341', '12342', '12351', '12352', '12361', '12362']

输入字符串可以是[12-45]888[1-2]76[0-9]之类的值,我希望Python中的函数能够为我提供包含所有组合的列表。

1 个答案:

答案 0 :(得分:1)

使用正则表达式查找范围,使用itertools.product查找所有可能性。

import re
from itertools import product

def getranges(s):
    for a, b in re.findall(r"\[(\d+)-(\d+)\]", s):
        yield range(int(a), int(b)+1)

def strcombs(s):
    for r in product(*getranges(s)):
        it = iter(str(i) for i in r)
        yield re.sub(r"\[\d+-\d+\]", lambda _: next(it), s)

s = "123[4-6][1-2]"
print(list(strcombs(s)))    # ['12341', '12342', '12351', '12352', '12361', '12362']