15

Python 3 文档在其编解码器页面上列出了 rot13 。

我尝试使用 rot13 编码对字符串进行编码:

import codecs
s  = "hello"
os = codecs.encode( s, "rot13" )
print(os)

这给出了一个unknown encoding: rot13错误。有没有不同的方法来使用内置的 rot13 编码?如果在 Python 3 中删除了这种编码(如 Google 搜索结果所示),为什么它仍然列在 Python3 文档中?

4

5 回答 5

22

在 Python 3.2+ 中,有rot_13str-to-str 编解码器

import codecs

print(codecs.encode("hello", "rot-13")) # -> uryyb
于 2013-11-19T07:11:37.423 回答
10

啊哈!我认为它已从 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]
于 2012-05-14T00:44:05.333 回答
1

rot_13在 Python 3.0 中被删除,然后在 v3.2 中重新添加。rot13在 v3.4 中重新添加。

codecs.encode( s, "rot13" )在 Python 3.4+ 中运行良好

实际上,现在你可以使用从现在到现在的任何标点符号rot13包括:

rot-13, rot@13,rot#13

https://docs.python.org/3/library/codecs.html#text-transforms

3.2 版中的新功能: rot_13 文本转换的恢复。
在 3.4 版更改: rot13 别名的恢复。

于 2021-10-20T20:03:31.760 回答
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
        

代码很大,但我只是在学习

于 2020-06-30T17:20:38.127 回答
0

首先你需要安装 python 库 - https://pypi.org/project/endecrypt/

pip install endecrypt (windows)
pip3 install 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
于 2020-10-31T04:50:55.240 回答