在python中将字母按一定值移位

新手上路,请多包涵

我有一个编码文本文件,它是通过简单的字母移位编码的。我现在已经将其中的信息放入两个列表中。在这种格式中:

 list_1 =['fjsir', 'vnjk', 'eioafnvjf', 'einbvfbj']
list_2 =[3,4,7,1]

第二个列表是字母表中应该移动多少个位置。例如。如果列表一中的索引 0 有 'fjsir' 并且它在 list_2 中的相应索引是 3 那么它将解码为 'cfpeo' 。我不确定如何在 python 中匹配这些。

原文由 bruhsmh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 437
1 个回答

向左移动元素:

 chr(ord(char) - n)

它使用 ord() 得到 char 的整数表示,并从这个数字中减去 n 。然后它使用 chr() 将其转换回字符。

该函数可能如下所示:

 def shift(s, n):
    return ''.join(chr(ord(char) - n) for char in s)

可以用 zip() 很好地调用它:

 list_1 =['fjsir', 'vnjk', 'eioafnvjf', 'einbvfbj']
list_2 =[3,4,7,1]

for x, y in zip(list_1, list_2):
    print(shift(x, y))

并返回解码:

 cgpfo
rjfg
^bhZ_goc_
dhmaueai

此外,如果您只希望解码只包含英文字母表中的字母,则可以使用模数函数 % 代替:

  def shift(s, n):
     return ''.join(chr((ord(char) - 97 - n) % 26 + 97) for char in s)

它返回仅包含字母的解码:

 cgpfo
rjfg
xbhtygocy
dhmaueai

原文由 RoadRunner 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题