文章

Python中将转义字符串转变为真正的转义字符

Python中将转义字符串转变为真正的转义字符

介绍

遇到一个需求,要把字符串”\n”、”\t”、”\uffef”等转化为真正的换行符、制表符等。

转义字符串 转 转义字符

1
print('\\n'.encode('utf8').decode('unicode_escape'))

转义字符 转 转义字符串

1
print('\n'.encode('unicode-escape').decode('utf8'))

原理

unicode_escape 会将字符串视为 python 源码进行编解码。

’\n’.encode(‘utf-8’) 将 “\n” 以utf8编码编码为 b”\u005c\u006e”(一个反斜杠一个n), 如果此时以 utf-8 进行解码,那么 “\u005c\u006e” 将会被当作字符串重新解码为 “\n”, 但是如果以 unicode_escape 进行解码,b”\u005c\u006e” 会被当作python源码,也就是被当作“用户在写代码时按了一下’', 又按了一下’n’”,进而被解码为 ‘\n’。

本文由作者按照 CC BY 4.0 进行授权