转义字符是什么?
按照通常定义来说,转义字符是让以它为首的字符串“变脸”的符号。’\’ 是常用的转义字符,它会和后面字符结合起来转义成具有其他意义的字符。
比如,“n”本来是一个乖巧的字符,前面加上转义字符“\”变成"\n"之后,在程序中就另有意义:换行。
转义字符‘\’应用
“\n”是常见的转义字符应用,而双引号字符(")在程序语言中作为字符串的分界,若需要在字符串内引入双引号字符,则用反斜杠字符“\”加到(“)前面进行处理。
如在python3中:
print ("Nancy said "Hello World!" to the crowd.")
会报错:
print (“Nancy said “Hello World!” to the crowd.”)
SyntaxError: invalid syntax
需要加上转义字符\让(")失去 本身字符串分界点的意义:
print ("Nancy said \"Hello World!\" to the crowd.")
输出:Nancy said “Hello World!” to the crowd.
可能在“路径声明”中踩转义字符的坑
转义符作为python解释器已经规定好了的解析字符,也会在coding中不经意间闪现出来,打个措手不及。不管你是不是有意用到转义字符,它就在那里,不离不弃。
如运行下面的代码会报错:
from scipy.misc import imread,imsave,imresize
img = imread("C:\Users\Dell\Pictures\1.jpg")
print (img.dtype,img.shape)
SyntaxError: (unicode error) ‘unicodeescape’ codec can’t decode bytes in position 2-3: truncated \UXXXXXXXX escape
windows系统中用(\)分隔路径,而解释器却认为“C:\Users\Dell\Pictures\1.jpg”中的“\”表示转义,所以会报错。
在路径声明中排除’\'的影响
如何让‘\’在字符串中只表示一个简单字符呢?
在它的基础上一层转义:也就是用(\\) 表示字符"\";或者想办法告诉解释器“下面的字符串不要转义”;最后一种更简单的方法,用’/'分隔路径。
1、使用双反斜杠:\\
img = imread("C:\\Users\\Dell\\Pictures\\1.jpg")
2、显式声明字符串不进行转义
img = imread(r"C:\Users\Dell\Pictures\1.jpg")
3、直接用‘/’分隔路径,这样的路径在windows和linux下都能使用(推荐)。
img = imread(r"C:/Users/Dell/Pictures/1.jpg")
以上三种方法参考Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案