-4

我有这样的输入屏蔽词--- ,我想-用数字替换所有(0-9)

代码:

def masker(input_mask,pattern):
 s = list()
 s = (itertools.product(pattern,repeat=1))

 for i in input_mask:
  if ( i=='-'): 
   for j in s :
    print (input_mask.replace('-',''.join(j)))


masker ('-a-' , '123')

但我的输出是:

1a1
2a2
3a3
1a1
2a2
3a3

我的主要目标是这个输出:

1a1
1a2
1a3
2a1
....
....
3a3
4

1 回答 1

1

在您的代码j = '1'中第一次运行。然后,您只需将所有内容替换-为...


我的建议是使用str.formatas mask(即用 替换你-{})。那么你可以这样做:

from itertools import product

def masker(input_mask, pattern):
    mask = input_mask.replace('-', '{}')  # mask = '{}a{}'
    for values in product(pattern, repeat=2):
        print(mask.format(*values))

masker(input_mask='-a-', pattern='123')

还要注意repeat=2. product要使其更通用,您需要使用repeat=input_mask.count('-').

于 2017-08-14T19:59:31.697 回答