【发布时间】:2021-10-14 06:49:15
【问题描述】:
在将数字转换为可能的视觉相似字母时,我需要确定具有数字的字符串的所有可能字母组合。
使用字典:
number_appearance = {
'1': ['l', 'i'],
'2': ['r', 'z'],
'3': ['e', 'b'],
'4': ['a'],
'5': ['s'],
'6': ['b', 'g'] ,
'7': ['t'],
'8': ['b'],
'9': ['g', 'p'],
'0': ['o', 'q']}
我想编写一个函数,它接受输入并创建所有可能的字母组合。例如:
text = 'l4t32'
def convert_numbers(text):
return re.sub('[0-9]', lambda x: number_appearance[x[0]][0], text)
我希望输出是一个包含所有可能排列的列表:
['later', 'latbr', 'latbz', 'latez]
如果您只是从number_appearance 中获取每个列表中的第一个字母,则上述函数有效,但我正在尝试找出迭代所有可能组合的最佳方法。任何帮助将不胜感激!
【问题讨论】:
-
我注意到在所有可能的排列列表中,您将
r替换为z,但您没有将l替换为i。这是为什么呢? -
我只是用看起来像它们的字母替换数字。
l不会被替换,因为它已经是一个字母。如果我使用数字1而不是字母l,我会想要一个同时使用l和i的版本。 -
但是
r也已经是一封信了!我认为您需要从排列列表中删除'latbz'和'latez'。 -
糟糕 - 这是我的错误 - 在示例中
r应该是2:)
标签: python regex string replace itertools