Python语言中,字符串时用两个双引号“ ”或单引号' '括起来的零个或者多个字符
字符串时字符的序列,可以按照单个字符或字符片段进行索引。
Python中的字符串是不可变的
Python3支持Unicode,可以表示世界上任何书面语言的字符。
Python3的字符默认就是16位Unicode编码。
ASCII码是Unicode编码的子集
Python允许空字符串的存在
len()函数用于计算字符串中有多少字符
注意:汉字和英文字符长度一样
我们可以使用“\+特殊字符”,实现某些难以用字符表示的效果。
转义字符 | 描述 |
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\b | 退格(Backspace) |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
'aa'+'bb'==>'aabb'
a.如果+两边都是字符串,则拼接。
b.如何+两边都是数字,则加法运算。
c.如果+两边类型不同,则抛出异常。
'aa''bb'==>'aabb'
使用*可以实现字符串复制
\n
我们调用print()时,会自动打印一个换行符。如果不需要自动添加换行符,我们可以自己通过参数end="任意字符串"。实现末尾添加任何内容:
print("aa",end="*")
print("bb",end="##")
print("cc",end="\t")
我们可以使用input()从控制台读取键盘输入的内容
在input()函数处执行了阻塞和等待
str()可以帮助我们将其他类型转换为字符串。
当我们调用print()函数时,解释器自动调用了str()将非字符串的对象成了字符串。
字符串的本质就是字符串序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推,直到len(str)-1为止。
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止。
字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,发现报错了;字符串不可改变。但是,我们确实有时候需要替换某些字符。这时,只能通过创建新的字符串来实现。
切片slice操作可以让我们快速的提取子字符串。
[起始偏移量start:终止偏移量end:步长step]
包头不包尾
典型操作(三个量为正数的情况)如下:
操作和说明 | 示例 | 结果 |
[:] 提取整个字符串 | “abcdef” [:] | "abcdef" |
[start:] 从start索引开始到结尾 | "abcdef" [2:] | "cdef" |
[:end] 从开头开始知道end-1 | "abcdef" [:2] | "ab" |
[start:end] 从start到end-1 | "abcdef" [2:4] | "cd" |
[start:end:step]从start提取到end-1,步长是step | "abcedf"[1:5:2] | "bd" |
其他操作(三个量为负数)的情况:
示例 | 说明 | 结果 |
"abcdefghijklmnopqrstuvwxyz" [-3:]
|
倒数三个 | "xyz" |
"abcdefghijklmnopqrstuvwxyz" [-8:-3]
|
倒数第八个到倒数第三个(包
头不包尾)
|
'stuvw'
|
"abcdefghijklmnopqrstuvwxyz" [::-1]
|
步长为负,从右到左反向提取 |
'zyxwvutsrqponmlkjih
gfedcba'
|
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始偏移量小于 0则会当做0,终止偏移量大于“长度-1”会被当成-1。
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来。
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。
推荐使用join函数。因为join函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
Python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线(_)、字母和数字)会启用字符串驻留机制。
我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符。
我们可以使用is/not is,判断两个对象是否是同一个对象。比较的是对象的地址,即id(obj1)是否和id(obj2)相等。
in/not in关键字,判断某个字符(子字符串)是否存在于字符串中。
方法和使用示例 | 说明 |
len() | 字符串长度 |
a.startswith() | 以指定字符串开头 |
a.endswith() | 以指定字符串结尾 |
a.find() | 第一次出现指定字符串的位置 |
a.rfind() | 最后一次出现指定字符串的位置 |
a.count() | 指定字符串出现了几次 |
a.isalnum | 所有字符全是字母或数字 |
我们可以通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。
编程中关于字符串大小写转换的情况经常遇到。
示例 | 说明 |
a.capitalize() | 产生新的字符串,首字母大写 |
a.title() | 产生新的字符串,每个单词的首字母都大写 |
a.upper() | 产生新的字符串,所有字符全转成大写 |
a.lower() | 产生新的字符串,所有字符全转成小写 |
a.swapcase() | 产生新的,所有字母大小写转换 |
center()、ljust()、rjust()这三个函数用于对字符串实现排版。
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过{}和:来代替以前的%
format函数可以接受不限个参数,位置可以不按顺序
b = "我的名字是:{name},我今年{age}岁了,{name}正在努力提升自己,你也要加油哦!"
b.format(name = "风槐啊", age = 2)
程序结果:
我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。
填充常跟对齐一起使用^、<、>分别是居中、左对齐、右对齐,后面带宽度:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
浮点数通过f,整数通过d进行需要的格式化。
以下为其他格式:
数字 | 格式 | 输出 | 描述 |
3.1415926
|
{:.2f}
|
3.14 | 保留小数点后两位 |
3.1415926
|
{:+.2f}
|
3.14 | 带符号保留小数点后两位 |
2.71828
|
{:.0f} | 3 | 不带小数 |
5 |
{:0>2d}
|
05
|
数字补零 (填充左边, 宽度为2)
|
5
|
{:x<4d}
|
5xxx
|
数字补x (填充右边, 宽度为4)
|
10
|
{:x<4d}
|
10xx
|
数字补x (填充右边, 宽度为4)
|
1000000
|
{:,}
|
1,000,000
|
以逗号分隔的数字格式
|
0.25
|
{:.2%}
|
25.00%
|
百分比格式
|
1000000000
|
{:.2e}
|
1.00E+09
|
指数记法
|
13 |
{:10d}
|
13
|
右对齐 (默认, 宽度为10) |
13 |
{:<10d}
|
13 |
左对齐 (宽度为10)
|
13 |
{:^10d}
|
13 |
中间对齐 (宽度为10)
|