unicode错误)“ unicodeescape”编解码器无法解码位置9-10中的字节

时间:2019-08-26 19:02:36

标签: python unicode

我下面有简单分配的python代码。

import datetime
from datetime import date
failed_script_name="Z:\Python\FAILED_CODE"+str(date.today())+".txt"
fail_script_name="Z:\Python\FAIL_CODE"+str(date.today())+".txt"
need_script_name="Z:\Python\NEED_CODE_"+str(date.today())+".txt"

我在第三次作业中遇到错误。如果我评论第三个任务,它的工作。我没有错第三次作业,因为它与前两次相同

File "Z:\Python\test.py", line 5
    need_script_name="Z:\Python\NEED_CODE_"+str(date.today())+".txt"
                ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in 
position 9-10: malformed \N character escape

1 个答案:

答案 0 :(得分:1)

反斜杠\在Python字符串文字中用作转义字符。转义字符用于表示字符,不能直接在源代码中键入。

如果在字符串文字中遇到\,python将通过查看下一个字符来确定要做什么。例如N向Python表示,应将以下用大括号括起来的字符序列读取为Unicode字符的名称,然后将在该点插入该字符,例如

>>> print("\N{RIGHTWARDS ARROW}")
→

但是,在您的情况下,您在\N后面加上其他无法解释的内容。因此出现错误消息。

P之后是F\的情况下,在Python中没有给它们指定特殊的含义,在设计上,Python将在这种情况下同时保留\和{字符串文字中的以下字符保持不变。因此,这些不会为您产生错误或任何问题:

>>> print("\P\F")
\P\F

一个人可以在字符串文字中插入\,方法是在其后跟另一个\,这向Python表示您希望在字符串文字中使用一个反斜杠:

>>> print("\\N{RIGHTWARDS ARROW}")
\N{RIGHTWARDS ARROW}

或者,您可以通过以下方式关闭\的特殊含义:在字符串文字前加上一个r,使其成为原始字符串文字

>>> print(r"\N{RIGHTWARDS ARROW}")
\N{RIGHTWARDS ARROW}

Also see the Python documentation which has a list of escape sequences and their interpretation.

以上答案假定使用Python3.x。在Python 2.x中,\N不会在普通字符串中被赋予任何特殊含义,即"\Nonesense"仅在以u为前缀使其成为unicode字符串文字时才会产生错误。 u"\Nonesense",其转义序列也适用于Python 2。

See also Python 2.x documentation.

相关问题