我正在使用python 3.5.1。当我尝试这个时
print(r'\t\\\')
我在扫描字符串文字时遇到错误:SyntaxError:EOL。 但是这个效果很好
print(r'\t\\')
有人可以解释一下吗?
答案 0 :(得分:5)
首先,你要逃避结束'
,因此你提出的问题中提到的SyntaxError
,因为你的字符串现在永远不会终止。在第二步中,您将转发\
,以便'
不会被转义。 '\\'
是字面上的反斜杠而不是转义,这就是'
未在第二个版本中转义的原因,以及为什么第一个版本末尾的'\'
为不转义。
不知怎的,我错过了你在谈论原始字符串。不过,请参阅the 3.5 docs:
即使在原始文字中,也可以使用反斜杠转义引号,但是 反斜杠仍然在结果中;例如,r" \""是一个有效的字符串 由两个字符组成的文字:反斜杠和双引号; R" \"不是有效的字符串文字(即使是原始字符串也不能以字符串结尾 奇数个反斜杠)。具体来说,原始文字无法结束 一个反斜杠(因为反斜杠会逃脱以下 引用字符)。还要注意单个反斜杠后跟一个 newline被解释为这两个字符作为文字的一部分, 不是一个续行。
答案 1 :(得分:-1)
此代码在扫描字符串文字时显示SyntaxError:EOL。
import cv2
import numpy as np
img = cv2.imread('88.png', 0)
cv2.imshow('image\', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
File "<ipython-input-2-df946a5b3e41>", line 18
cv2.imshow('image\', res)
^
SyntaxError: EOL while scanning string literal
但是当我从行中删除“ \”
cv2.imshow('image\', img)
我的代码成功运行。
我的无错代码如下:
import cv2
import numpy as np
img = cv2.imread('88.png', 0)
cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()