SyntaxError: (unicode error) ‘unicodeescape’ 编解码器无法解码位置 2-3 中的字节:截断 \UXXXXXXXX 转义

SyntaxError: (unicode error) ‘unicodeescape’ 编解码器无法解码位置 2-3 中的字节:截断\ UXXXXXXXXX 转义

SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape

当路径中存在未转义的反斜杠字符时,Python 会出现“SyntaxError: (unicode error) ‘unicodeescape’ codec can’t解码位置中的字节”。

要解决该错误,请在路径前添加前缀以r将其标记为原始字符串,例如
r'C:\Users\Bob\Desktop\example.txt'

语法错误 unicode 错误 unicdeescape 编解码器无法解码字节

File "/home/borislav/Desktop/bobbyhadz_python/main.py", line 2 file_name = 'C:\Users\Bob\Desktop\example.txt' ^ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

以下是错误发生方式的示例。

主要.py
# ⛔️ SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape file_name = 'C:\Users\Bob\Desktop\example.txt' with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() print(lines)

字符串包含反斜杠字符

该路径包含反斜杠字符,这是错误的原因。

反斜杠\字符在 Python 中具有特殊含义。它用作转义字符(例如\n\t)。

在字符串前面加上前缀,r将其标记为原始字符串

解决该错误的一种方法是在字符串前添加字母r以将其标记为
原始字符串

主要.py
# ✅ prefix string with r file_name = r'C:\Users\Bob\Desktop\example.txt' with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() print(lines)
以 为前缀的字符串r称为原始字符串,并将反斜杠视为文字字符。

如果错误仍然存​​在,请尝试改用三引号原始字符串。

主要.py
# ✅ wrapped raw string in triple quotes file_name = r'''C:\Users\Bob\Desktop\example.txt''' with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() print(lines)

您也可以直接使用
open()
函数,而不使用
with 语句

主要.py
file_name = r'C:\Users\Bob\Desktop\example.txt' my_file = open(file_name, 'r', encoding='utf-8') lines = my_file.readlines() print(lines) my_file.close()

r无论哪种方式,都可以在字符串前面加上前缀。

使用第二个反斜杠字符转义反斜杠

将反斜杠\视为文字字符的另一种方法是使用第二个反斜杠对其进行转义\\

主要.py
# ✅ escape each backslash with a second backslash file_name = 'C:\\Users\\Bob\\Desktop\\example.txt' with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() print(lines)

我们转义了每个反斜杠字符,将它们视为文字反斜杠。

这是一个字符串,显示 2 个反斜杠如何仅转换为 1 个。

主要.py
my_str = 'bobby\\hadz' print(my_str) # 👉️ "bobby\hadz"

同样,如果您需要 2 个相邻的反斜杠,则必须使用 4 个反斜杠。

主要.py
my_str = 'bobby\\\\hadz\\\\com' print(my_str) # 👉️ "bobby\\hadz\\com"

在路径中使用正斜杠而不是反斜杠

该错误的替代解决方案是在路径中使用正斜杠而不是反斜杠。

主要.py
# ✅ using forward slashes instead of backslashes file_name = 'C:/Users/Bob/Desktop/example.txt' with open(file_name, 'r', encoding='utf-8') as f: lines = f.readlines() print(lines)

当需要指定路径时,可以使用正斜杠代替反斜杠。

这解决了错误,因为路径中不再有任何未转义的反斜杠字符。

发生错误的原因是\U路径中的字符是
Unicode 代码点

主要.py
file_name = 'C:\Users\Bob\Desktop\example.txt'

如果后面的 8 个字符\U不是数字,则会引发错误。

由于反斜杠字符在 Python 中具有特殊含义,因此我们需要通过以下方式将它们视为文字字符:

  • 为字符串添加前缀以r将其标记为原始字符串
  • 用第二个反斜杠转义每个反斜杠
  • 在路径中使用正斜杠代替反斜杠

错误的 3 种可能的解决方案

以下是该错误的 3 种可能的解决方案。

主要.py
# ✅ prefix string with r file_name = r'C:\Users\Bob\Desktop\example.txt' # ✅ escaping each backslash with another backslash file_name = 'C:\\Users\\Bob\\Desktop\\example.txt' # ✅ using forward slashes instead of backslashes file_name = 'C:/Users/Bob/Desktop/example.txt'

如果这些建议都不起作用,请尝试使用
三引号
原始字符串。

主要.py
file_name = r'''C:\Users\Bob\Desktop\example.txt'''

正如

文档的
这一部分所述:

反斜杠 ( \) 字符用于转义具有特殊含义的字符,例如换行符、反斜杠本身或引号字符。

除非字符串以 为前缀r,否则转义序列将解释如下:

转义序列 意义
{换行} 反斜杠和换行符被忽略
\ 反斜杠 ( \)
\’ 单引号 ( ')
\” 双引号 ( ")
\n ASCII 换行
\r ASCII 回车符
\t ASCII 水平制表符

反斜杠也用作延续字符。

主要.py
my_str = 'first \ second \ third' print(my_str) # first second third

当在行尾添加反斜杠时,换行符将被忽略。