在python SyntaxError:EOL中扫描字符串文字

时间:2016-09-05 02:02:25

标签: python-3.x

我正在使用python 3.5.1。当我尝试这个时

print(r'\t\\\')

我在扫描字符串文字时遇到错误:SyntaxError:EOL。 但是这个效果很好

print(r'\t\\')

有人可以解释一下吗?

2 个答案:

答案 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()