目录
1. 单/双引号:single quotes/double quotes
若干个字符的集合就是一个字符串(String)。字符串的内容可以包含字母、标点、特殊符号、中文、日文等全世界的所有文字。
可分为单引号:single quotes、双引号:double quotes、长字符串:triple quotes
1. 单/双引号:single quotes/double quotes
Python 字符串中的双引号和单引号没有任何区别。
当字符串内容中出现引号时,需要进行特殊处理:
- 如字符串中只出现了单引号或双引号,那么我们可以使用另一种引号包围字符串;
- 字符串里的引号前添加反斜杠\,对引号进行转义,让 Python 把它作为普通文本处理,可解决字符串同时出现单\双引号情况;
- 使用原始字符串。
#单引号
print('i love china!')
i love china!
#双引号
print("i love china!")
i love china!
#使用另一种引号
print('I say:"Oh my god!"')
I say:"Oh my god!"
print("I say:'Oh my god!'")
I say:'Oh my god!'
#同时有单双引号,使用转义字符,否则报错
print('"life is short, Let's Learn python')
SyntaxError: unterminated string literal (detected at line 1)
print('\"life is short, Let\'s Learn python\"')
"life is short, Let's Learn python"
2. 字符串换行
Python 对程序的换行、缩进都有严格的语法要求。如字符串需要换行书写,必须在行尾添加反斜杠\,或者使用长字符串。
#换行书写
s = 'a\
... b\
... c'
print(s)
a bc
#换行书写+转义字符换行
s = 'a\n\
... b\n\
... c'
print(s)
a
b
c
3. 长字符串:triple quotes
长字符串格式如下:
'''ABC'''
"""ABC"""
长字符串,使用三个单引号或者双引号可以对多行内容进行注释,支持直接换行,无需添加反斜杠\;
前后所用必须一致为单引号或双引号;
长字符串中放置单引号或者双引号不会导致解析错误;
长字符串中换行、空格、缩进等空白符都会原样输出,注意首行前有换行,则输出时出现空白行,如下:
s = '''
... abc d!
... 中文12。3'''
print(s)
abc d!
中文12。3
4. 原始字符串:r
字符串中的反斜杠\有着特殊的作用,即转义字符,此时有两种解决方法:
- 使用\\替换掉字符串中的\
- 字符串最前面使用字母r表示后续字符串是原始字符串,不使用任何转义字符
在原始字符串中,\不会被当作转义字符,所有的内容保持“原汁原味”,如下;
#因转义字符导致字符串输出错误
print("D:\three\two\one\now")
D: hree wo\one
ow
#使用\\替换\
print("D:\\three\\two\\one\\now")
D:\three\two\one\now
#使用原始字符串
print(r"D:\three\two\one\now")
D:\three\two\one\now
如单双引号格式的原始字符串中出现引号,程序同样需要对引号进行转义,否则 Python 无法对字符串的引号精确配对,但此时用于转义的反斜杠会变成字符串内容的一部分,建议此种情况使用:原始字符串+长字符串 r'''abc''',如下:
print(r'I say:\"That\'s http:\\ABC?\"')
I say:\"That\'s http:\\ABC?\"
print(r'''I say:"That's http:\\ABC?"''')
I say:"That's http:\\ABC?"
由于Python 原始字符串中的反斜杠仍然会对引号进行转义,因此原始字符串的结尾处不能是反斜杠,否则字符串结尾处的引号会被转义,导致字符串不能正确结束。有两种方法解决该问题:
- 使用\\替代\;
- 单独书写反斜杠。
#使用\\替代\;
print('D:\\three\\two\\one\\now\\')
D:\three\two\one\now\
#单独书写反斜杠
print(r'D:\three\two\one\now''\\')
D:\three\two\one\now\
5. 转义字符
5.1 编码转义字符
Python 中,ASCII 字符除直接使用外,还可以应用它的ASCII编码值表示,参见Ascii码 。这种使用间接编码值来表示字符的方式称为转义字符(Escape Character)。
Python 中转义字符只能使用八进制或者十六进制转义字符表示;
\0 开头表示后跟八进制形式的编码值,\x 开头表示后跟十六进制形式的编码值,\0 和 \x 后最多只能跟两位数字;
ASCII 编码共收录了 128 个字符,所以八进制 \0 并不能表示所有的 ASCII 字符,\x 才可以表示所有 ASCII 字符;
Python 转义字符只对 ASCII 编码(128 个字符)有效,超出范围的行为是不确定的。
#8进制转义字符
print('\061')
1
print('\062')
2
#16进制转义字符
print('\x62')
b
print('\x61')
a
#8进制支持最大转义字符编码值
print('\077')
?
#16进制支持最大转义字符编码值
print('\xff')
ÿ
5.2 控制转义字符
ASCII 编码,0~31(十进制)范围内的字符为控制字符,无法显示也无法直接从键盘输入,必须用转义字符的形式表示。
为方便记忆和使用,针对常用的控制字符,有如下简写控制字符列表:
转义字符 | 说明 |
\n | 换行符,将光标位置移到下一行开头。 |
\r | 回车符,将光标位置移到本行开头。 |
\t | 水平制表符,即 Tab ,一般相当于四个空格。 |
\a | 蜂鸣器响铃。当前计算机很多不带蜂鸣器,不一定有效。 |
\b | 退格(Backspace),将光标位置移到前一列。 |
\\ | 反斜杠 |
\' | 单引号 |
\" | 双引号 |
\ | 续行符,字符串行尾使用,即一行未完,转到下一行继续写。 |