如何避免Python函数解析字符串中的转义字符?
解决方案
针对你的具体场景
直接在函数中把转义后的@替换为/100,即可得到期望输出:
def func(x): processed = x.replace('@', '/100') temp_str = repr(processed) return temp_str my_str = 'some\100random' print(func(my_str)) # 输出: 'some/100random'
通用场景(若存在更多八进制转义字符)
如果需要处理多个类似\100的八进制转义字符,可以维护一个转义映射表,批量替换还原:
def func(x): # 映射表:转义后的字符 → 目标格式的字符串 esc_map = { '@': '/100', 'A': '/101', 'B': '/102' # 可根据实际需求扩展其他八进制转义对应关系 } processed = x for char, replacement in esc_map.items(): processed = processed.replace(char, replacement) temp_str = repr(processed) return temp_str
问题本质
你定义my_str = 'some\100random'时,Python在代码解析阶段就会把\100识别为八进制转义序列:八进制100对应十进制ASCII码64,也就是字符@。因此my_str的实际存储内容是'some@random',原字符串中的\和100已经被替换成了@——无法从变量本身还原原始转义序列,只能通过函数将@反向替换为你需要的/100格式。
内容的提问来源于stack exchange,提问作者Karol
相关产品推荐
相关产品推荐

