如何在不删除\n、\t等字符的前提下将字符串转成ROT13格式?
解决ROT13转换保留特殊字符的问题
核心逻辑:ROT13仅需对A-Z、a-z字母做偏移转换,所有非字母字符(包括转义字符、数字、符号)直接原样保留,完全不需要使用
strip()——这个函数的作用是删除字符串首尾空白字符,和你的需求完全不相关。方法一:手动实现字符遍历处理
写一个函数逐个检查字符,仅针对字母执行ROT13转换,其余字符直接拼接:def rot13_preserve_special(s): result = [] for char in s: if 'a' <= char <= 'z': result.append(chr((ord(char) - ord('a') + 13) % 26 + ord('a'))) elif 'A' <= char <= 'Z': result.append(chr((ord(char) - ord('A') + 13) % 26 + ord('A'))) else: result.append(char) return ''.join(result) example_string = "\x0c\n\r\\;(ap8y+" output = rot13_preserve_special(example_string) print(repr(output)) # 输出结果:'\x0c\n\r\\;(nc8l+'方法二:使用Python标准库
codecs(更简洁)
标准库的rot_13编码本身就只会处理字母,自动保留所有非字母字符,直接调用即可:import codecs example_string = "\x0c\n\r\\;(ap8y+" output = codecs.encode(example_string, 'rot_13') print(repr(output)) # 输出结果:'\x0c\n\r\\;(nc8l+'
内容的提问来源于stack exchange,提问作者Vaxlt _
相关产品推荐
相关产品推荐

