python - 以特定方式分隔列表中的每个项目

标签 python

我有一个输入,它是一个字符串元组,以 a1z26 密码编码:从 1 到 26 的数字代表字母,连字符代表相同的单词字母,空格代表单词之间的空格。 例如: 8-9 20-8-5-18-5 应翻译为“嗨,那里”

假设最后一个示例是名为 string 的 var 中的元组

string = ('8-9','20-8-5-18-5')

我发现合乎逻辑的第一件事是使用

将元组转换为列表

string = list(string)

所以现在

string = ['8-9','20-8-5-18-5']

现在的问题是,当我迭代列表以将其与具有翻译值的字典进行比较时,双位数被视为 1,因此,例如,不是翻译“20”,而是翻译“2”然后是“0”,结果是字符串“hi bheahe”(2 =b、1 = a 和 8 = h)

所以我需要一种方法将上面的列表转换为下面的 列表

['8','-','9',' ','20','-','8','-','5','-','18','-','5',]

我已经尝试过使用各种代码

list(), join() and split()

但它最终给了我同样的问题。

总而言之,我需要将任何给定的列表(从输入元组转换而来)转换为一个字符列表,其中同时考虑两位数、空格和连字符

这就是我到目前为止所得到的。 (我最后写的)输入在代码中更靠前(字符串)

a1z26 =  {'1':'A', '2':'B', '3':'C', '4':'D', '5':'E', '6':'F', '7':'G', '8':'H', '9':'I', '10':'J', '11':'K', '12':'L',  '13':'M', '14':'N',  '15':'O', '16':'P', '17':'Q', '18':'R', '19':'S', '20':'T', '21':'U', '22':'V',  '23':'W', '24':'X', '25':'Y', '26':'Z', '-':'', ' ' : ' ', ', ' : ' '}            
    translation = ""
    code = list(string)
    numbersarray1 = code
    numbersarray2 = ', '.join(numbersarray1)            
    for char in numbersarray2:
        if char in a1z26:
            translation += a1z26[char] 

最佳答案

无需将元组转换为列表。元组也是可迭代的。

我认为您列出的列表并不是您真正想要的。您可能需要一个二维可迭代(不一定是一个列表,正如您将在下面看到的,我们可以一次性完成此操作,而无需生成中间列表),其中每个项目对应于一个单词,并且是字符编号的列表:

[[8, 9], [20, 8, 5, 18, 5]]

由此,您可以将每个数字转换为字母,将字母连接在一起形成单词,然后用空格连接单词。

为此,您需要向 split 传递一个参数,告诉它如何拆分输入字符串。您可以通过一个衬垫实现所有这一切:

plaintext = ' '.join(''.join(num_to_letter[int(num)] for num in word.split('-'))
                     for word in ciphertext.split(' '))

这完全执行了如上所述的拆分过程,然后针对每个数字查找字典 num_to_letter 进行转换。

请注意,您甚至不需要这个字典。您可以利用 unicode 中的 A-Z 是连续的这一事实,因此要将 1-26 转换为 A-Z,您可以执行 chr(ord('A') + num - 1)

关于python - 以特定方式分隔列表中的每个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53918541/

相关文章:

python - Pandas 用行中的值替换列

python - 查找后跟连字符或空格,后跟一个或多个全大写字母和数字的单词

python - 避免 0 和其他算作 False

python - 根据条件在 Numpy 数组中选择随机坐标

python - 如何向一个键添加多个列表?

python - 将选项动态附加到 Django 模型中的选项列表

python - 如何从Python中的某些HTML节点仅获取可见文本

python - 使用python计算每笔交易之间的时间差

python - 如何扩展类方法

python - 如何在 sqlalchemy 声明中设置属性默认值?