如何将字符打印为转义序列形式而非对应的字符编码值
原因
Python内置的repr()函数对控制字符的展示有固定规则:仅会将\n、\t、\r、\f这几个高频转义符显示为反斜杠+字母的形式,退格符\b不在这个默认适配列表里,所以会被渲染为\x08的十六进制编码形式,这就是你原有写法对\b无效的核心原因。
解决方案
方案1:快速替换(简单场景够用)
直接对repr()的输出结果做字符串替换,把\x08替换为你需要的\b即可:
value = '\b' formatted = repr(value)[1:-1].replace(r'\x08', r'\b') print(formatted) # 输出结果为 \b
如果需要适配其他同类型转义符(比如响铃符\a对应\x07),可以链式调用replace方法追加规则。
方案2:自定义转义函数(灵活可控)
如果需要统一管理所有转义符的展示规则,避免依赖Python官方对repr()的默认逻辑,可以自己写映射处理函数:
def custom_escape(input_str): # 可按需扩展你需要的转义映射规则 escape_mapping = { '\b': r'\b', '\t': r'\t', '\n': r'\n', '\r': r'\r', '\f': r'\f', '\a': r'\a' } result = [] for char in input_str: if char in escape_mapping: result.append(escape_mapping[char]) else: # 未命中规则的字符走默认repr逻辑 result.append(repr(char)[1:-1]) return ''.join(result) # 测试用例 print(custom_escape('\b hello\t\n')) # 输出:\b hello\t\n
这个方案兼容性更好,也支持你自定义任意字符的展示格式。
内容的提问来源于stack exchange,提问作者Rizhiy
相关产品推荐
相关产品推荐

