Unicode解码字节错误(Python)

Unicode解码字节错误(Python),python,unicode,Python,Unicode,这个错误消息是什么意思 SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码123-125位置的字节:截断\uxxx转义 我在注释中的某个位置报告了此错误,该位置仅包含非Unicode字符 问题代码如下所示: """ loads Font combinations from a file # # The font combinations are saved in the format: % -> Palatino, Helvetica, Courie

这个错误消息是什么意思

SyntaxError:(unicode错误)'UnicodeScape'编解码器无法解码123-125位置的字节:截断\uxxx转义

我在注释中的某个位置报告了此错误,该位置仅包含非Unicode字符

问题代码如下所示:

""" loads Font combinations from a file
#
# The font combinations are saved in the format:
% -> Palatino, Helvetica, Courier
\usepackage{mathpazo}                 %% --- Palatino (incl math)
\usepackage[scaled=.95]{helvet}       %% --- Helvetica (Arial)
\usepackage{courier}                  %% --- Courier
\renewcommand{\fontdesc}{Palatino, Arial, Courier}
% <-------------------
#
# with "% ->" indicating the start of a new group
# and "% <" indicating the end.
"""
”从文件中加载字体组合
#
#字体组合以以下格式保存:
%->帕拉蒂诺、赫尔维蒂卡、信使
\usepackage{mathpazo}%%---Palatino(包括数学)
\usepackage[scaled=.95]{helvet}%%---Helvetica(Arial)
\usepackage{courier}%%---courier
\renewcommand{\fontdesc}{Palatino,Arial,Courier}

%这意味着您正在解码的数据中的\uxxx转义序列无效。具体来说,这意味着它是短的。很可能文本中的某个地方有文本“\U”,但后面没有Unicode字符号。

这意味着您正在解码的数据中的\uxxx转义序列无效。具体来说,这意味着它是短的短。很可能文本中的某个地方有文本“\U”,但后面没有Unicode字符号。

Python 3字符串是Unicode的,因此它会尝试解码“\U”转义。因此,即使您尝试将字符串用作注释,它也会尝试解码它

实际的评论,例如:

#\usepackage{mathpazo}
不会被解码


如果您注意到它属于
SyntaxError
s类,这意味着即使它是“无法访问的代码”,它也会发出一个标志。

Python 3字符串是Unicode的,因此它会尝试解码“\u”转义。因此,即使您尝试将字符串用作注释,它也会尝试解码它

实际的评论,例如:

#\usepackage{mathpazo}
不会被解码


如果您注意到它属于
SyntaxError
s类,这意味着即使它是“无法访问的代码”,它也会发出一个标志。

正如其他人所说,它试图将
\usepack
解析为Unicode转义,但由于它无效而失败。解决此问题的方法是转义反斜杠:

"""\\usepackage""
或者使用


,其中包括docstring约定,建议使用后者。

正如其他人所说,它试图将
\usepackage
解析为Unicode转义,但由于其无效而失败。解决方法是转义反斜杠:

"""\\usepackage""
或者使用


,其中包括docstring约定,建议使用后者。

值得注意的是,“有问题的代码”在技术上不是注释,而是一个多行字符串,将在字节码编译期间进行评估

取决于它在源文件中的位置,它可能最终会出现在中,因此它必须在语法上有效

例如

>>> def myfunc():
...     """This is a docstring."""
...     pass
>>> myfunc.__doc__
'This is a docstring.'
>>> help(myfunc)
Help on function myfunc in module __main__:

myfunc()
    This is a docstring.
Python中没有真正的多行注释分隔符,所以如果不希望对其求值,请使用多个单行注释

# This is my comment line 1
# ...line 2
# etc.
def myfunc():
    pass

值得注意的是,“有问题的代码”在技术上不是注释,而是一个多行字符串,将在字节码编译期间对其进行评估

取决于它在源文件中的位置,它可能最终会出现在中,因此它必须在语法上有效

例如

>>> def myfunc():
...     """This is a docstring."""
...     pass
>>> myfunc.__doc__
'This is a docstring.'
>>> help(myfunc)
Help on function myfunc in module __main__:

myfunc()
    This is a docstring.
Python中没有真正的多行注释分隔符,所以如果不希望对其求值,请使用多个单行注释

# This is my comment line 1
# ...line 2
# etc.
def myfunc():
    pass


我也想包括代码,但stackoverflow拒绝排除代码中的问题,因为存在一个低质量的问题…将其放在可能无效的转义代码上有问题的代码是注释,甚至不应该执行任何内容。从这个意义上讲,这是不同的。另一个好问题是为什么要使用“UnicodeScape”'作为文件的编码。我认为这是根本错误。UTF-8可能是一个更好的选择。我也想包含代码,但stackoverflow拒绝将代码中的问题排除在外,因为这是一个低质量的问题…将其放在可能无效的转义代码上有问题的代码是一个注释,没有什么值得注意的n应该被执行。从这个意义上讲,它是不同的。另一个好问题是为什么要使用“UnicodeScape”作为文件的编码。我认为这是根本错误。UTF-8可能是一个更好的选择。是的,我的评论包括行
\usepackage{mathpazo}%---Palantino(包括数学)
。但是为什么要分析注释?@MatthiasPospiech:docstring不是注释。好的,我不知道什么是docstring,但这说明了产生错误的原因。@MatthiasPospiech:我假设解码在任何情况下都是在分析之前完成的,所以如果注释给出相同的错误,我不会感到惊讶。是的,我的注释中包含了行
\usepackage{mathpazo}%%---帕兰蒂诺(包括数学)
。但是为什么要分析注释?@MatthiasPospiech:docstring不是注释。好的,我不知道什么是docstring,但这清楚了产生错误的原因。@MatthiasPospiech:我假设在任何情况下,解码都是在分析之前完成的,所以如果注释给出相同的错误,我不会感到惊讶。或者原始字符串文本:
r”\uxxx“
@J.F.Sebastian好吧,听起来OP实际上不想使用docstring,所以我认为使用常规单行注释是最简单的,因为这是防止Python尝试计算“comment”块的唯一方法。我想我可以补充一下,尽管Cairnarvon的回答中已经提到了。或者原始字符串文字:
r“\uxxxxx”
@J.F.Sebastian嗯,听起来OP实际上不想使用docstring,所以我认为使用常规单行注释是最简单的,因为这是防止Python尝试计算“comment”块的唯一方法。我想我可以加上这一点,尽管在凯恩森的回答中已经提到了这一点。