首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >短rot13函数- Python

短rot13函数- Python
EN

Stack Overflow用户
提问于 2010-07-17 08:33:30
回答 16查看 118.2K关注 0票数 72

我在Python语言中寻找一个简短而又酷的rot13函数;-)我写了这个函数:

代码语言:javascript
复制
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 ) 

有人能让它变得更好吗?例如,支持大写字符。

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2010-07-17 08:56:26

maketrans()/translate()解决方案…

Python 2.x

代码语言:javascript
复制
import string
rot13 = string.maketrans( 
    "ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz", 
    "NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm")
string.translate("Hello World!", rot13)
# 'Uryyb Jbeyq!'

Python 3.x

代码语言:javascript
复制
rot13 = str.maketrans(
    'ABCDEFGHIJKLMabcdefghijklmNOPQRSTUVWXYZnopqrstuvwxyz',
    'NOPQRSTUVWXYZnopqrstuvwxyzABCDEFGHIJKLMabcdefghijklm')
'Hello World!'.translate(rot13)
# 'Uryyb Jbeyq!'
票数 82
EN

Stack Overflow用户

发布于 2010-07-17 12:27:45

这很简单:

代码语言:javascript
复制
>>> import codecs
>>> codecs.encode('foobar', 'rot_13')
'sbbone'
票数 153
EN

Stack Overflow用户

发布于 2010-07-17 08:37:07

这适用于Python 2(但不适用于Python 3):

代码语言:javascript
复制
>>> 'foobar'.encode('rot13')
'sbbone'
票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3269686

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档