SyntaxError: EOL while scanning string literal

在Python 中,这个提示,一般是因为特殊字符引起的,比如换行符,比如 \ 等。

下面有几个示例:

  1. 换行符

# 源错误代码
get_tabs="select b.owner,b.table_name,
regexp_substr(b.table_name, '20[[:digit:]]+', 1,1,'i') 
from tab_model a,all_tab_models b 
where a.owner = b.owner and a.tab_model=b.tab_mod and regexp_like(b.table_name,'20[[:digit:]]+$') and length(regexp_substr(b.table_name, '20[[:digit:]]+',1,1,'i'))=:nums and regexp_substr(b.table_name, '20[[:digit:]]+', 1,1,'i')<to_char(TRUNC(SYSDATE,'YYYY')-RESERV_NUMS+1,:format)"

# 正确代码
get_tabs="select b.owner,b.table_name,regexp_substr(b.table_name, '20[[:digit:]]+', 1,1,'i') from dbmon.tab_model a,dbmon.all_tab_models b where a.owner = b.owner and a.tab_model=b.tab_mod and regexp_like(b.table_name,'20[[:digit:]]+$') and length(regexp_substr(b.table_name, '20[[:digit:]]+',1,1,'i'))=:nums and regexp_substr(b.table_name, '20[[:digit:]]+', 1,1,'i')<to_char(TRUNC(SYSDATE,'YYYY')-RESERV_NUMS+1,:format)"

  两者区别就在于,将本来通过回车实现的换行,全部删除,也就是原则 上双引号内的内容要在一行内(当然视觉上可能不在同一行)。

2. \ 

 双引号内的 \ ,要经过转义符转义。 

#错误代码

saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic\" + picName + '.jpg' 


# 正确代码
saved_pic = "E:\\WebServer\\WordPress\\to_wp\\hi-baidu-mover_v2\\pic\\"     saved_pic += picName + '.jpg'

saved_pic = r"E:\WebServer\WordPress\to_wp\hi-baidu-mover_v2\pic"     saved_pic += '\\' + picName + '.jpg'

 

posted @ 2018-03-30 11:06  halberd.lee  阅读(2048)  评论(0编辑  收藏  举报