Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to ROT13 encode in Python3?

The Python 3 documentation has rot13 listed on its codecs page.

I tried encoding a string using rot13 encoding:

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

This gives a unknown encoding: rot13 error. Is there a different way to use the in-built rot13 encoding? If this encoding has been removed in Python 3 (as Google search results seem to indicate), why is it still listed in Python3 documentation?

like image 590
Ashwin Nanjappa Avatar asked May 14 '12 00:05

Ashwin Nanjappa


2 Answers

In Python 3.2+, there is rot_13 str-to-str codec:

import codecs

print(codecs.encode("hello", "rot-13")) # -> uryyb
like image 145
jfs Avatar answered Sep 22 '22 07:09

jfs


Aha! I thought it had been dropped from Python 3, but no - it is just that the interface has changed, because a codec has to return bytes (and this is str-to-str).

This is from 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]
like image 26
andrew cooke Avatar answered Sep 24 '22 07:09

andrew cooke