我在Python语言中寻找一个简短而又酷的rot13函数;-)我写了这个函数:
def rot13(s):
chars = "abcdefghijklmnopqrstuvwxyz"
trans = chars[13:]+chars[:13]
rot_char = lambda c: trans[chars.find(c)] if chars.find(c)>-1 else c
return ''.join( rot_char(c) for c in s )
有人能让它变得更好吗?例如,支持大写字符。
发布于 2010-07-17 08:56:26
maketrans()
/translate()
解决方案…
Python 2.x
import string
rot13 = string.maketrans(
"ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz",
"NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
string.translate("Hello World!", rot13)
# 'Uryyb Jbeyq!'
Python 3.x
rot13 = str.maketrans(
'ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz',
'NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm')
'Hello World!'.translate(rot13)
# 'Uryyb Jbeyq!'
发布于 2010-07-17 12:27:45
这很简单:
>>> import codecs
>>> codecs.encode('foobar', 'rot_13')
'sbbone'
发布于 2010-07-17 08:37:07
这适用于Python 2(但不适用于Python 3):
>>> 'foobar'.encode('rot13')
'sbbone'
https://stackoverflow.com/questions/3269686
复制相似问题