replace()函数无法替换反斜杠,Unicode转义字符无法转为原字符串求助
解决Python中Unicode转义序列的显示问题
我明白你的困扰:你定义的字符串str = '\U0009d014'被Python自动解析成了对应的Unicode字符(显示为퀔),但你想要输出的是原始的转义序列形式\U0009d014,而不是这个符号。之前用replace和split处理反斜杠没用,是因为这个字符串里根本没有反斜杠——Python在解析代码时已经把\U0009d014转换成了对应的字符,原字符串里的转义符已经被处理掉了。
下面给你几个可行的解决方案:
方案1:定义时使用原始字符串
如果你还没定义字符串,或者可以重新定义,直接在字符串前面加r(原始字符串标记),这样Python就不会解析转义序列,会完整保留所有字符:
str = r'\U0009d014' print(str) # 输出:\U0009d014
方案2:用repr()函数还原转义序列
如果已经有了解析后的字符,repr()函数会返回该对象的“官方”字符串表示,其中包含转义序列:
str = '\U0009d014' print(repr(str)) # 输出:'\U0009d014' # 要是不想带引号,可以截取中间部分 print(repr(str)[1:-1]) # 输出:\U0009d014
方案3:编码为Unicode转义格式
可以把字符编码成unicode-escape格式,再解码回ASCII字符串,这样就能得到转义序列:
str = '\U0009d014' escaped_str = str.encode('unicode-escape').decode('ascii') print(escaped_str) # 输出:\U0009d014
这几个方法都能帮你得到想要的原始转义序列形式,根据你的实际场景选一个就行~
内容的提问来源于stack exchange,提问作者Darsh
相关产品推荐
相关产品推荐

