当原始字符串用三引号引起来时,为什么会出现“ SyntaxError:(unicode错误)”?

时间:2019-05-08 13:12:52

标签: python python-3.x unicode unicode-escapes

每当我在原始字符串两边加上三引号时,就会发生以下错误:

SyntaxError:(unicode错误)“ unicodeescape”编解码器无法解码位置28-29中的字节:格式错误的\ N字符转义

我想知道为什么会这样,是否有任何方法可以避免这种情况。

我尝试过移动三引号以使其与代码的各个部分保持一致,但到目前为止没有任何效果。

这运行没有错误:

final_dir = (r'C:\Documents\Newsletters')

'''
path_list = []
for file in os.listdir(final_dir):
    path = os.path.join(final_dir, file)
    path_list.append(path)
'''

但这会产生一个错误:

'''
final_dir = (r'C:\Documents\Newsletters')
path_list = []
for file in os.listdir(final_dir):
    path = os.path.join(final_dir, file)
    path_list.append(path)
'''

1 个答案:

答案 0 :(得分:1)

'\N'这样的字符串文字中,\N具有特殊含义:

  

\N{name}在Unicode数据库中名为 name 的字符

来自String and Bytes literals - Python 3 documentation

例如,'\N{tilde}'变为'~'

由于要引用代码,因此可能要使用原始字符串文字:

r'\N'

例如:

>>> r"""r'C:\Documents\Newsletters'"""
"r'C:\\Documents\\Newsletters'"

或者您可以逃脱反斜杠:

'\\N'

\D不会发生此错误,因为它没有特殊含义。

感谢deceze实际上在评论中写了这个答案