Python字符串¶
字符串(string)就是若干个字符的集合.
Python中的字符串必须由双引号" "或者单引号' '包围, 具体格式为:
"字符串内容"
'字符串内容'
- 字符串是Python的内置数据类型;
- Python中没有字符这种类型, 一个字符就是只有一个元素的字符串;
- Python字符串中的双引号和单引号没有任何区别(通常使用单引号).
注解
有些编程语言中, 双引号字符串可以解析变量, 单引号字符串一律原样输出, 但是Python字符串中的双引号和单引号没有任何区别.
处理字符串中的引号¶
当字符串内容中出现引号时, 我们需要进行特殊处理, 否则Python会解析出错, 例如:
'I\'m a great coder!'
由于上面的字符串中包含了单引号, 此时Python会将字符串中的单引号与第一个单引号配对, 这样就会把'I'当成字符串,
而后面的m a greater coder!'就变成了多余的内容, 从而导致语法错误.
对于这种情况, 有两种处理方案:
- 对引号进行转义
在引号前面添加反斜杠\就可以对引号进行转义, 让Python把它作为普通字符对待.
Example:
str = 'I\'m a great coder'
注解
有些字符就是普通的字符,可以正常显示的, 如a, b, c, 1, 2, 3.
有写字符有特殊的含义, 通常是不显示的, 而是有特殊的含义, 比如引号表示字符串的开始和结束标记. 对于有特殊含义的字符, 在其前面加上一个反斜杠, 表示将其作为普通字符来处理(去掉其特殊含义).
\叫做转义字符, 表示将其后的特殊字符作为普通字符处理.
\本身就是一个特殊字符, \\表示对反斜杠进行转义, 将反斜杠作为普通字符.
- 使用不同的引号包围字符串
如果字符串内容中出现了单引号, 那么可以使用双引号包围字符串, 反之亦然.
Example:
str = "I'm a great coder"
字符串的换行¶
Python不是格式自由的语言, 它对程序的换行, 缩进都有严格的语法要求.
要想在书写字符串时换行, 必须在行尾添加一个反斜杠\.
Example:
str = 'hello\
world'
注解
行末的反斜杠表示换行书写, Python在解析时会将不同行的字符串连接在一起, 中间的空白字符会保留.
另外, Python也支持表达式的换行.
Example:
num = 20 + 3/4 + \
2*3
print(num)
Python长字符串¶
所谓长字符串, 就是可以直接换行(不用加反斜杠\)书写的字符串.
Python长字符串由三个双引号"""或者三个单引号'''包围, 语法格式如下:
"""长字符串内容"""
'''长字符串内容'''
在长字符串中放置单引号或者双引号不会导致解析错误.
当程序中有大段文本内容需要定义成字符串时, 优先推荐使用长字符串形式, 因为这种形式非常强大, 可以在字符串中放置任何内容, 包括单引号和双引号.
但是注意, 长字符串中的换行, 空格, 缩进等空白字符都会原样输出.
Python原始字符串¶
在普通字符串或者长字符串的开头加上r前缀, 就变成了原始字符串, 具体格式为:
str1 = r'原始字符串内容'
str2 = r'''原始字符串内容'''
所谓原始字符串, 就是所见即所得的字符串.
原始字符串中的引号¶
如果普通格式的原始字符串中出现引号, 程序同样需要对引号进行转义, 否则Python照样无法对字符串的引号精确匹配; 但是和普通字符串不同的是, 此时用于转义的反斜杠会称为字符串内容的一部分.
Example:
str1 = r'I\'m a great coder!'
print(str1)
输出结果为:
I\'m a great coder!
注解
Python的原始字符串仍然是所见即所得的, 但是原始字符串中的的\也仍然有转义的作用.
需要注意的是, Python原始字符串中的反斜杠仍然会对引号进行转义, 因此原始字符串的结尾处不能是反斜杠, 否则字符串结尾处的引号会被转义, 导致字符串不能正确结束. 在Python中有两种方式解决这个问题:
- 不要使用原始字符串;
- 单独书写反斜杠.
例如, 想表示D:\Program Files\Python 3.8\, 可以这样写:
# 不使用原始字符串
str1 = 'D:\\Program File\\Python 3.8\\'
print(str1)
# 单独书写反斜杠, 再使用字符串拼接
str2 = r'D:\Program File\Python 3.8' '\\'
print(str2)
字符串编码¶
Python 3.x中, 字符串采用的是Unicode字符集, 默认使用的是UTF-8编码.
可以使用如下代码来查看当前环境下的编码格式:
>>> import sys
>>> sys.getdefaultencoding()
同时, 在Python 3.x中也可以使用ord()和chr()函数实现字符和编码数字之间的转换, 例如:
>>> ord('Q')
81
>>> char(81)
'Q'
Python默认采用UTF-8编码, 但也提供了encode()方法, 可以将Unicode编码格式的字符串转化为其它编码格式.