在 Python 中取消转义反斜杠转义字符串
Unescape a backslash-escaped string in Python
要取消转义反斜杠转义的字符串:
- 使用该
str.encode()
方法将字符串转换为带
raw_unicode_escape
编解码器的字节对象。 - 使用该
bytes.decode()
方法通过编解码器将字节对象转换为未转义的字符串unicode_escape
。
主程序
my_str = 'first\\nsecond\\nthird' result = my_str.encode('raw_unicode_escape').decode('unicode_escape') # first # second # third print(result)
str.encode方法将字符串
的编码版本作为字节对象返回。默认编码是utf-8
.
我们使用
raw_unicode_escape
编解码器将字符串转换为字节对象,而不以任何方式转义反斜杠。
主程序
my_str = 'first\\nsecond\\nthird' my_bytes = my_str.encode('raw_unicode_escape') print(my_bytes) # 👉️ b'first\\nsecond\\nthird'
下一步是使用该bytes.decode()
方法将字节对象转换为未转义的字符串。
主程序
my_str = 'first\\nsecond\\nthird' result = my_str.encode('raw_unicode_escape').decode('unicode_escape') # first # second # third print(result)
这是上面代码片段的更详细版本。
主程序
my_str = 'first\\nsecond\\nthird' result = my_str.encode( 'latin-1', errors='backslashreplace').decode('unicode_escape') print(result)
如果在将字符串编码为字节对象时发生错误,我们会用反斜杠转义序列替换无法翻译的字符。
主程序
my_str = 'фирст\\nsecond\\nтхирд' # 👇️ b'\\u0444\\u0438\\u0440\\u0441\\u0442\\nsecond\\n\\u0442\\u0445\\u0438\\u0440\\u0434' print(my_str.encode('latin-1', errors='backslashreplace'))
然后该bytes.decode()
方法将字节对象转换为未转义的字符串。
bytes.decode
方法返回从给定字节解码的字符串。默认编码是
utf-8
.
这种方法也适用于包含非 ASCII 字符的字符串。
主程序
my_str = 'фирст\\nsecond\\nтхирд' # фирст # second # тхирд result = my_str.encode('raw_unicode_escape').decode('unicode_escape') print(result)