在将数字转换为可能的视觉上相似的字母时,我需要确定具有数字的字符串的所有可能的字母组合
使用字典:
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
中获取每个列表中的第一个字母,那么上面的函数就可以工作,但是我正在尝试找出迭代所有可能组合的最佳方法。任何帮助都将不胜感激
根据您自己的回答,我建议如下:
改善措施包括:
我会这样分解问题:
首先,创建一个函数,该函数可以替换给定的替换字母集。我的输入规范是一个字母序列,其中第一个字母是
'0'
字符的替换,第二个字母是1
等字符的替换。这允许我使用该序列中的索引来确定要替换的字符,同时生成一个普通序列,而不是dict或其他复杂结构。要进行替换,我将使用原始字符串的内置translate
方法。这需要一个描述为in the documentation的字典,我可以用dict理解或提供的helper方法str.maketrans
(一种str
类型的静态方法)轻松构建它Use ^{} 生成这些序列
使用列表理解为每个序列应用替换
因此:
(您会注意到结果中存在重复;这是因为输入中没有出现符号的变体替换。)
相关问题 更多 >
编程相关推荐