到目前为止,我们所认知的字符串就是引号内的一切东西。字符串也称为文本,文本和数字是截然不同的。
如果直接让两个数字相加,那么Python会直接将数字相加后的结果告诉你:
>>> 4 + 5
9
但是如果在数字的两边加上了引号,就变成了字符串的拼接,这正是引号带来的差别:
>>> '4'+'5'
'45'
要告诉Python你在创建一个字符串,就要在字符两边加上引号,可以是单引号或双引号,Python表示在这一点上不挑剔。但必须成对,不能一边用单引号,另一边却用双引号,这样Python就不知道你到底想干嘛了:
>>>’Python I love you!"
SyntaxError: EOL while scanning string literal
那如果字符串内容中需要出现单引号或双引号,怎么办?
>>> ’Let's go'
SyntaxError: invalid syntax
像上面这样写,Python 会误解你的意思(认为'Let'是一个字符串,而sgo'是另一个不完整的字符串),从而产生错误。
有两种方法来改进。第一种比较常用,就是使用转义符号(\)对字符串中的引号进行转义,这样Python 就知道这个引号是要直接输出的:
>>>’Let\'s go'
"Let's go"
还有一种方法,就是利用 Python既可以用单引号也可以用双引号表示字符串这一特点,只要用上不同的引号表示字符串,那么Python就不会误解你的意思啦。
>>> "Let's go"
"Let's go"
3.3 原始字符串
看起来好像反斜杠是一个好东西,那不妨试试打印C:\now,代码如下:
>>> string =’C:\now'
>>> string
’C:\now’
>>> print(string)
C:
OW
打印结果并不是我们预期的,原因是反斜杠(\)和后边的字符(n)恰好转义之后构成了换行符(\n)。这时候有朋友可能会说,用反斜杠来转义反斜杠不就可以啦。嗯,不错,的确可以用反斜杠对自身进行转义:
>>> string =’C:\\now'
>>> string
’C:\\now'
>>> print(string)
C:\now
但如果一个字符串中有很多个反斜杠,我们就不乐意了。毕竟,这不仅是一个苦差事,还可能使代码变得混乱。
不过大家也不用怕,因为在Python 里有一个快捷的方法,就是使用原始字符串。原始字符串的使用非常简单,只需要在字符串前边加一个英文字母r即可:
>>> string = r'c:\now'
>>> string
’c:\\now'
>>> print(string)
C:\now
在使用字符串时需要注意的一点是:无论是否为原始字符串,都不能以反斜杠作为结尾(注:反斜杠放在字符串的末尾表示该字符串还没有结束,换行继续的意思)如果坚持这样做就会报错:
>>> string = ’first\'
SyntaxError:EOL while scanning string literal
>>> string = r'first\'
SyntaxError: EOL while scanning string literal
大家不妨考虑一下:如果非要在字符串的结尾加个反斜杠,有什么办法可以来灵活实现呢?