Python 3文档在其codecs page上列出了rot13。
我尝试使用rot13编码编码一个字符串:
import codecs
s = "hello"
os = codecs.encode( s, "rot13" )
print(os)
这会导致unknown encoding: rot13
错误。是否有不同的方法来使用内置的rot13编码?如果在Python 3中删除了此编码(正如Google搜索结果似乎表明的那样),为什么它仍然在Python3文档中列出?
答案 0 :(得分:16)
在Python 3.2+中,有rot_13
str-to-str codec:
import codecs
print(codecs.encode("hello", "rot-13")) # -> uryyb
答案 1 :(得分:7)
啊哈!我认为它已经从Python 3中删除了,但是没有 - 只是接口已经改变了,因为编解码器必须返回字节(这是str-to-str)。
这是http://www.wefearchange.org/2012/01/python-3-porting-fun-redux.html:
import codecs
s = "hello"
enc = codecs.getencoder( "rot-13" )
os = enc( s )[0]
答案 2 :(得分:0)
def rot13(message):
Rot13=''
alphabit = 'abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLMNOPQRSTUVWXYZ'
for i in message:
if i in alphabit:
Rot13 += alphabit[alphabit.index(i) + 13]
else:
Rot13 += i
return Rot13
代码很大,但是我只是在学习
答案 3 :(得分:0)
首先,您需要安装python库-https://pypi.org/project/endecrypt/
通过pip安装endecrypt(Windows)
pip3安装endecrypt(Linux)
然后
from endecrypt import cipher
message_to_encode = "Hello World"
conversion = 'rot13conversion'
cipher.encode(message_to_encode, conversion )
# Uryyb Jbeyq
message_to_decode = "Uryyb Jbeyq"
cipher.decode(message_to_decode, conversion)
# Hello World