前面我们讲解了什么是字符串。字符串可以用''或者""括起来表示。
如果字符串本身包含'怎么办?比如我们要表示字符串 I'm OK ,这时,可以用" "括起来表示:
"I'm OK"
类似的,如果字符串包含",我们就可以用' '括起来表示:
'Learn "Python" in imooc'
如果字符串既包含'又包含"怎么办?
这个时候,就需要对字符串的某些特殊字符进行“转义”,Python字符串用\进行转义。
要表示字符串 Bob said "I'm OK".
由于 ' 和 " 会引起歧义,因此,我们在它前面插入一个\表示这是一个普通字符,不代表字符串的起始,因此,这个字符串又可以表示为
'Bob said "I'm OK".'
注意:转义字符 \ 不计入字符串的内容中。
常用的转义字符还有:
\n 表示换行
\t 表示一个制表符
\ 表示 \ 字符本身
Python中raw字符串与多行字符串
如果一个字符串包含很多需要转义的字符,对每一个字符都进行转义会很麻烦。为了避免这种情况,我们可以在字符串前面加个前缀 r ,表示这是一个 raw 字符串,里面的字符就不需要转义了。例如:
r'(_)/ (_)/'
但是r'...'表示法不能表示多行字符串,也不能表示包含'和 "的字符串(为什么?)
如果要表示多行字符串,可以用'''...'''表示:
'''Line 1
Line 2
Line 3'''
上面这个字符串的表示方法和下面的是完全一样的:
'Line 1\nLine 2\nLine 3'
还可以在多行字符串前面添加 r ,把这个多行字符串也变成一个raw字符串:
r'''Python is created by "Guido".
It is free and easy to learn.
Let's start learn Python in imooc!'''
-
为什么不能表示多行字符串?
多行字符串肯定包含 \n , 但r'...' 里面的字符不需要转义, 就是说 \ 只是普通的斜杠所以 r'...' 并不能表示出 多行字符串 的效果.
-
为什么不能表示包含 ' 和 " 的字符串?
情况一. ' 和" 同时存在:print r'Python is created by "Guido". Let's start learn Python in imooc!'
File "<stdin>", line 1
print r'Python is created by "Guido". Let's start learn Python in imooc!'
^
SyntaxError: invalid syntax
######### r'...'里面同时出现 ' 和 " 报错, 因为包含 ' 和 " 的会分不清;情况二 . 只有 "
print r'python is created by "Guido".'
python is created by "Guido".
######### 输出正常, 原因同 表示具有' 的字符串时用" 引起来;情况三 . 只有 '
print r'Let's start learn Python in imooc!'
File "<stdin>", line 1
print r'Let's start learn Python in imooc!'
^
SyntaxError: invalid syntax######### 报错 , 原因 r 的第一个 ' 和 Let' 的 ' 匹配了.