使用输入掩码生成 pass_words
Generating pass_words with input mask
我有像 ---
这样的输入掩码词,我想用数字 (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
在您的代码 j = '1'
中第一个 运行。然后你只需将所有 -
替换为...
我的建议是将 str.format
用作 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')
还要注意 product
中的 repeat=2
。为了使其更通用,您需要使用 repeat=input_mask.count('-')
.
我有像 ---
这样的输入掩码词,我想用数字 (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
在您的代码 j = '1'
中第一个 运行。然后你只需将所有 -
替换为...
我的建议是将 str.format
用作 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')
还要注意 product
中的 repeat=2
。为了使其更通用,您需要使用 repeat=input_mask.count('-')
.