在 Python 中取消转义反斜杠转义字符串

在 Python 中取消转义反斜杠转义字符串

Unescape a backslash-escaped string in Python

要取消转义反斜杠转义的字符串:

  1. 使用该str.encode()方法将字符串转换为带
    raw_unicode_escape编解码器的字节对象。
  2. 使用该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)