解码python rot13字符串

时间:2017-10-29 16:22:50

标签: python rot13

我在python中编写了一个rot13编码的字符串,我将对其进行解码:

"Gur dhvpx oebja sbk whzcrq bire gur ynml qbt"

是否可以在python中进行?我找不到任何方法来做到这一点。

请帮忙!

这是我尝试过的:

s = "Gur dhvpx oebja sbk whzcrq bire gur ynml qbt"
s1 = ""
for i in range(len(s)):
    c = s[i]
    if c >= 'a' and c <= 'm': c += 13
    elif c > 'A' and c < 'M': c += 13
    elif c >= 'n' and c < 'z': c -= 13
    elif c >= 'N' and c <= 'Z': c -= 13
    s1 += c
    print(c)
print(s1)

2 个答案:

答案 0 :(得分:1)

要解码rot13已编码的字符串,例如s,只需再次获取字符串的rot13,即计算rot13(s)

如果您不熟悉如何在python中计算rot13,请尝试使用Google搜索,您肯定会找到一个。我用Google搜索并找到了一个效果很好的解决方案:https://stackoverflow.com/a/3269756/3293087 [注意,它只适用于python2而不是python3,因为string.maketrans已从python3中删除。]

为了完整起见,我将在此处编写代码:

# Python 2 solution
import string
rot13Table = string.maketrans( 
    "ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz", 
    "NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
rot13 = lambda s : string.translate(s, rot13Table)

print rot13("Hello World!") 
# Outputs "Uryyb Jbeyq!"

注意:我不会写出与OP最初发布的相对应的解码字符串,因为它非常令人反感和同性恋。有兴趣的人可以自己做。

更新:我还找到了适用于python 2&amp; 3来自this SO answer。事实证明rot13模块中的python中有一个内置codecs编码器:

# Python 2 & 3 compatible
import codecs
rot13 = lambda s : codecs.getencoder("rot-13")(s)[0]

# Answer
rot13("Gur dhvpx oebja sbk whzcrq bire gur ynml qbt")

更新2 :由于OP坚持知道答案并且似乎没有安装python,我有一个创建的JS解决方案https://codepen.io/anon/pen/zPYVQP。其他人请谨慎行事。

答案 1 :(得分:0)

import string #use this package
utf8=string.maketrans("NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm","ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz") #this are the related alphabets
print(string.translate("Gur dhvpx oebja sbk whzcrq bire gur ynml qbt", utf8))