解码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)

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

如果你不熟悉如何在python中计算rot13,试着在谷歌上搜索一下,你肯定会找到一个。我在谷歌上搜索了一下,找到了一个效果很好的解决方案:https://stackoverflow.com/a/3269756/3293087[注意,由于string.maketrans已从python3中删除,因此它仅适用于python2,而不适用于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最初发布的内容相对应的解码字符串,因为它非常冒犯和恐同。任何感兴趣的人都可以自己做。

更新:我还找到了一个适用于python2&3都来自这个SO的答案。事实证明,在codecs模块中,python中有一个内置的rot13编码器:

# 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.其他人请谨慎行事。

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

相关内容

  • 没有找到相关文章

最新更新