如何在Python3中进行ROT13编码?

时间:2012-05-14 00:34:57

标签: python-3.x rot13

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文档中列出?

4 个答案:

答案 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