Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python的数字到字母数字编码器(排列和正则表达式)_Python_Regex_Dictionary_Permutation_Encoder - Fatal编程技术网

使用python的数字到字母数字编码器(排列和正则表达式)

使用python的数字到字母数字编码器(排列和正则表达式),python,regex,dictionary,permutation,encoder,Python,Regex,Dictionary,Permutation,Encoder,各位好,斯塔克斯 我面临的问题希望你们能帮助解决 我已经写了两段代码,我想合并在一起。 基本上,对于给定的数字字符串输入,我想迭代字符串中的每个字符。字符通过条件语句进行分析,并转换为另一个符号,例如数字转换为字母,本质上我正在尝试创建一个编码器。此外,我需要灵活地用不同的符号编码数字,例如,数字0到A或B,我想比较输出列表,以便我可以排列每一种可能的组合 例如: 输入 01 -0到A* -0到B* -1至*C 输出 自动控制 卑诗省 到目前为止,我已经尝试了一些组合,我认为我把事情复杂化了 第

各位好,斯塔克斯

我面临的问题希望你们能帮助解决

我已经写了两段代码,我想合并在一起。 基本上,对于给定的数字字符串输入,我想迭代字符串中的每个字符。字符通过条件语句进行分析,并转换为另一个符号,例如数字转换为字母,本质上我正在尝试创建一个编码器。此外,我需要灵活地用不同的符号编码数字,例如,数字0到A或B,我想比较输出列表,以便我可以排列每一种可能的组合

例如:

输入 01 -0到A* -0到B* -1至*C

输出 自动控制 卑诗省

到目前为止,我已经尝试了一些组合,我认为我把事情复杂化了

第一个应用程序迭代单词列表,如果语句包含数字。不相关的数字用星号“包装”,以便在下一个处理阶段使用

import re

wordlist = ["012"]

for i in range(0, 2):
    if i == 0:
        dictionary = ['A', 'B']
        for symbol in dictionary:
            for x in range(0, 1):
                zero = re.sub("0", symbol, wordlist[x])
                zero = re.sub("[1-9]", "*", zero)
                wordlist.append(zero)
    elif i == 1:
        dictionary = ['C']
        for symbol in dictionary:
            one = re.sub("1", symbol, wordlist[x])
            one = re.sub("[02-9]", "*", one)
            wordlist.append(one)

del wordlist[0]
print(wordlist)
第二个应用程序将这两个词合并在一起:

wordone = "A****"
wordtwo = "*B***"
# wordthree = "**C**"

union = []

for charA, charB in zip(wordone, wordtwo):
    enumerate(charA)
    asciicharA = ord(charA)
    enumerate(charB)
    asciicharB = ord(charB)

    if (asciicharA ^ asciicharB != 0):
        if (chr(asciicharA) == "*"):
            union.append(chr(asciicharB))
        elif (chr(asciicharB) == "*"):
            union.append(chr(asciicharA))
    elif (charA and charB == "*"):
        union.append(charA or charB)

print(union)
我似乎不知道如何将这两个应用程序合并在一起。我认为我需要将第一个应用程序的输出创建为单独的字符串,以便在第二个应用程序中进行后处理,但是我认为可能有一种非常有效的方法来生成我需要的结果

此外,我相信“itertools库”中有一个置换函数,我可以利用它生成第二个应用程序中所需的结果

您正在寻找与列表解包相结合的:

from itertools import product

# map every possible combination here
substitutes = {'0': ['A', 'B'], '1': 'C', '2': ['D', 'E', 'F']}

# the actual input
input = '012'

raw = [substitutes[char] for char in input]
for c in product(*raw):
    print(c)
产生

('A', 'C', 'D')
('A', 'C', 'E')
('A', 'C', 'F')
('B', 'C', 'D')
('B', 'C', 'E')
('B', 'C', 'F')
您正在寻找与列表解包相结合的:

from itertools import product

# map every possible combination here
substitutes = {'0': ['A', 'B'], '1': 'C', '2': ['D', 'E', 'F']}

# the actual input
input = '012'

raw = [substitutes[char] for char in input]
for c in product(*raw):
    print(c)
产生

('A', 'C', 'D')
('A', 'C', 'E')
('A', 'C', 'F')
('B', 'C', 'D')
('B', 'C', 'E')
('B', 'C', 'F')

哇,太棒了!感谢您用一些简单而优秀的代码回答我的问题@宣言:不客气。真的看看
itertools
,它们功能强大。哇,太棒了!感谢您用一些简单而优秀的代码回答我的问题@宣言:不客气。请仔细看看
itertools
,它们功能强大。