Python字符串方法详解
字符串类型的表示
字符串
字符串由0个或多个字符组成的有序字符序列
- 字符串由一对单引号或一对双引号表示
“请输入带有符号的温度值:” 或者 ‘C’
- 由一对三单引号或三双引号表示,可表示多行字符串
‘’‘Python
_______________语言’’’`
字符编码
ASCII
ASCII(American Standard Code for Information Interchange),是一种单字节的编码。计算机世界里一开始只有英文,而单字节可以表示256个不同的字符,可以表示所有的英文字符和许多的控制符号。
ASCII码表
基本ASCII码字符的内容
字符 | ASCII编码 | 十进制值 |
---|---|---|
控制字符 | 0000,0000——0001,1111和0111,1111 | |
0——9 | 0011,0000——0011,1001 | 48——57 |
A——Z | 0100,0001——0101,1010 | 65——90 |
a——z | 0110,0001——0110,1010 | 97——122 |
符号 | 其余 |
比较字符ASCII码值的大小
Unicode
太多编码导致世界变得过于复杂了,于是大家坐在一起拍脑袋想出来一个方法:所有语言的字符都用同一种字符集来表示,这就是Unicode。
- 统一字符编码,即覆盖几乎所有字符的编码方式
- 从0到1114111 (0x10FFFF)空间,每个编码对应一个字符
- Python字符串中每个字符都是Unicode编码字符
函数及使用 | 描述 |
---|---|
chr(u) | x为Unicode编码,返回其对应的字符 |
ord(x) | x为字符,返回其对应的Unicode编码 |
>>> "1 + 1 = 2 " + chr(10004)
'1 + 1 = 2 √ '
>>> "这个字符♉的Unicode值是:" + str(ord(♉))
'这个字符♉的Unicode值是: 9801'
>>> for i in range (12):
print(char(9800 + i) , end = "")
♈♉♊♋♌♎♏♐♑♓♒♍
字符串操作符
操作符及使用 | 描述 |
---|---|
x + y | 连接两个字符串x和y |
n * x 或 x * n | 复制n次字符串x |
X in S | 如果X是S的子串,返回True,否则返回False |
字符串类型的格式化
为什么会有字符串类型的格式化问题呢?例如,一个程序希望输出如下内容:
- 其中,下划线内容可能会变化,需要由特定函数运算结果进行填充,最终形成上述格式字符串作为输出结果。字符串格式化用于解决字符串和变量同时输出时的格式安排。
format()方法的基本使用
- 字符串format()方法的基本使用格式是:
<模板字符串>.format(<逗号分隔的参数>)
-
<模板字符串>由一系列的槽组成,用来控制修改字符串中嵌入值出现的位置,其基本思想是将format()方法的<逗号分隔的参数>中的参数按照序号关系替换到<模板字符串>的槽中。槽用大括号{}表示,如果大括号中没有序号,则按照出现顺序替换。
-
如果大括号中指定了使用参数的序号,按照序号对应参数替换,调用format()方法后会返回一个新的字符串,参数从0开始编号。
>>>"{}:计算机{}的CPU占用率为{}%。".format("2016-12-31","PYTHON",10)
'2016-12-31 : 计算机PYTHON的CPU占用率为10%。'
- format()方法可以非常方便地连接不同类型的变量和内容,如果需要输出大括号,采用{{表示{,}}表示},例如:
>>>"{}{}{}".format("圆周率是",3.1415926,"...")
'圆周率是3.1415926...'
>>>"圆周率{{{1}{2}}}是{0}"format("无理数",3.145926,"...")
'圆周率{3.1415926...}是无理数‘’
>>>s = "圆周率{{{1}{2}}}是{0}"
>>>s
'圆周率{{{1}{2}}}是{0}'
>>>s.format("无理数",3.1415926,"...") ## 当调用format()时解析
'圆周率{3.1415926...}是无理数'
format()方法的格式控制
- format()方法中<模板字符串>的槽除了包括参数序号,还可以包括格式控制信息。此时,槽的内部样式如下:
{<参数序号>:<格式控制标记>}
- 其中,<格式控制标记>用来控制参数显示时的格式,格式内容如下:
格式控制标记
- <格式控制标记>包括:<填充><对齐><宽度>,<.精度><类型>6个字段、这些字段都是可选的,可以组合使用,这里按照使用方式逐一介绍
- **<填充><对齐><宽度>**是三个相关字段。
<宽度>
- <宽度>是指当前槽的设定输出字符宽度,如果该槽对应的format()参数长度比<宽度>设定值大,则使用参数实际长度。如果该值的实际数小于指定宽度,则位数将被默认以空格字符补充。
<对齐>
- <对齐>指参数在<宽度>内输出时的对齐方式,分别使用<、>和^三个符号表示左对齐、右对齐和居中对齐。
<填充>
- <填充>指<宽度>内除了参数外的字符采用什么方式表示,默认采用空格,可以通过<填充>更换.
>>> s = "PYTHON"
>>> "{0:30}".format(s)
'PYTHON '
>>>"{0:>30}".format(s)
' PYTHON'
>>>"{0:*^30}".format(s)
'***********PYTHON***********'
>>>"{0:-^30}".format(s)
'-------------PYTHON------------'
>>>"{0:3}".format(s)
'PYTHON'
<.精度>
- **<.精度>**表示两个含义,由小数点(.)开头。
- 对于浮点数,精度表示输出的有效位数。
- 对于字符串,精度表示输出的最大长度
>>>"{0:.2f}".format(12345.67890)
'12345.68'
>>>"{0:H^20.3f}".format(12345.67890)
'HHHHH12345.679HHHHHH'
>>>"{0:.4}".format("PYTHON")
'PYTH'
<类型>
-
<类型>表示输出整数和浮点数类型的格式规则。
➢b: 输出整数的二进制方式;
➢c: 输出整数对应的Unicode字符;
➢d: 输出整数的十进制方式;
➢o: 输出整数的/ (进制方式;
➢x: 输出整数的小写十六进制方式;
➢X:输出整数的大写十六进制方式; -
对于浮点数类型,输出格式包括4种:
➢e: 输出浮点数对应的小写字母e的指数形式;
➢E: 输出浮点数对应的大写字母E的指数形式;
➢f: 输出浮点数的标准浮点形式;
➢%:输出浮点数的百分形式。
浮点数输出时尽量使用**<.精度>**表示小数部分的宽度,有助于更好控制输出格式。
>>>a = "I love Python."
>>>b = "*"
>>>c = "^"
>>>print("{0:{1}^25}".format(a,b))
>>>print("{0:{1}^{2}}".format(a,b,25))
>>>print("{0:{1}{3}{2}}".format(a,b,25,c))
*****I love Python.******
*****I love Python.******
*****I love Python.******
字符串的特殊字符
- 转义符
转义符表达特定字符的本意:
转义符形成一些组合,表达一些不可打印的含义:
转义符类型 | 描述 |
---|---|
“\b” | 回退 |
“\n” | 换行(光标移动到下行首) |
“\r” | 回车(光标移动到本行首) |