本章主要讲述关于字符串(str)类型的相关知识点,主要包括有字符串表示法、转移字符、ASCII编码、raw原始字符串函数、字符串运算、字符串索引及切片、常用字符串序列函数、字符串方法、格式化字符串及占位符等
1、字符串 str
作用:用来记录文本信息
序列的概念:字符串是序列的一种
表示方法:
在非注释中,凡是用引号括起来的部分都是字符串,包括以下四种:' 单引号
" 双引号
''' 三单引号
""" 三双引号
空字符串的表示方法: 注: 空字符串的布尔值为False
' '" "
''' '''
""" """
非空字符串表示方式:
'hello'"hello"
'''hello'''
"""hello"""
单引号和双引号的区别:
单引号内可以包含双引号双引号内可以包含单引号
三引号字符串的作用:
三引号字符串中的换行会自动转换为换行符 '\n'三引号内可以包含单引号和双引号
示例:
print('welcome to beijing.\nI like python!\nI am Studing!')
隐式字符串字面值拼接
s = "I'm " 'a programer.' 'my name is "python3"'
print(s)
2、用转义序列代表特殊字符
转义格式 | 意义 |
---|---|
\' | 单引号(') |
\" | 双引号(") |
\\ | 反斜杠(\ ) |
\n | 换行 |
\r | 返回光标至行首 |
\f | 换页 |
\t | 水平制表符 |
\v | 重直制表符 |
\b | 倒退 |
\0 | 空字符,字符值为零 |
\0oo | oo为两位八进制表示的字符 |
\xXX | XX为两位十六进制表示的字符 |
\uXXXX | Unicode 16的十六进制表示的字符 |
\UXXXXXXXX | Unicode 32的十六进制表示的字符 |
3、ASCII 编码
查看ASCII 编码表: $ man ascii<回车>
常用的ASCII编码:
字符 十进制 十六进制'0' 48 0x30
'A' 65 0x41
'a' 97 0x61
4、raw 字符串(原始字符串)
格式:r'字符串内容'
r"字符串内容"
r'''字符串内容'''
r"""字符串内容"""
作用:让转义符号 \ 无效
示例:
a = 'C:\newfile\test.py'
print(a)
5、字符串的运算
+ 加号用于拼接字符串
x = "ABC" + 'DEF'
print(x)
y = "123"
z = x + y
+= 复合赋值
x += y 等同于 x = x + y
* 运算符生成重复的字符串
x = "ABC" * 2
print(x)
注: 字符串只能和整数相乘
*= 运算符:
x *= y 等同于 x = x * y
6、字符串的比较运算
运算符:> >= < <= == !=
示例:
"A" == 'A' # True
'A' < 'B' # True
'ABC' > 'ABB' # True
'ADC' < 'ABC' # False
'AD' > 'ABC' # True
'AB' > 'ABC' # False
'ABCD' != 'DCBA' # True
7、in / not in 运算符
作用:in 用于序列,字典,集合等容器类中,用于判断某个值是否存在于容器中,如果存在返回True,不存在返回False
not in 与 in运算符返回的布尔值相反
格式:
对象 in 序列
示例:
x = 'welcome to beijing'
'to' in x # True
'hello' in x # False
8、字符串的索引
索引 index:python 字符串是不可以改变的字符序列
语法:字符串[整数表达式]
说明:
python序列都可以用索引(index)来访问序列中的对象
python 序列正向的索引从0开始,第二个索引为1,最后一个索引为len(s)-1
python 序列的反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)
9、切片 slice
作用:从字符串序列中取出一部分相应的元素重新组成一个字符串
语法:
字符串[(开始索引b):(结束索引e)(:(步长s))]
注: () 内括起的部分代表可以省略
说明:
1. 开始索引是切片开始切下的位置0代表第一个元素,-1代表最后一个元素
2. 结束索引是切片的终止索引(但不包含终止索引)
3. 步长是切片每次获取完当前索引后移动的方向和偏移量
a、 没有步长,相当于取值完成后向后移动一个索引的位置(默认为1)
b、当步长为正整数时,取正向切片:
步长默认值为1, 开始索引默认值为0, 结束索引的默认值为len(s)
c、当步长为负整数时,取反向切片:
反向切片时,默认的起始位置为最后一个元素,默认终止位置为第一个元素的前一个位置
示例:
s = 'ABCDE'
a = s[1:4] # a -> 'BCD'
a = s[1:] # a -> 'BCDE'
a = s[:2] # a -> 'AB'
a = s[:] # a -> 'ABCDE'
a = s[4:2] # a -> ''
a = s[2:10000] # a -> 'CDE' 开始索引/结束索引可以越界
a = s[::2] # a -> 'ACE'
a = s[1::2] # a -> 'BD'
a = s[::-1] # a -> 'EDCBA'
a = s[::-2] # a -> 'ECA'
a = s[4:0:-2] # a -> 'EC'
10、python3中常用的序列函数
len(x) 返回序列的长度max(x) 返回序列的最大值元素
min(x) 返回序列的最小值元素
字符串编码(encode)的转换函数:
ord(c) 返回一个字符的Unicode 值
chr(i) 返回i这个值所对应的字符
整数转换为字符串的函数:
hex(i) 将整数转换为十六进制的字符串
oct(i) 将整数转换为八进制的字符串
bin(i) 将整数转换为二进制的字符串
字符串的构造函数 str
str(obj='') 对象转字换为字符
11、python3中常用的字符串方法(method)
方法的调用语法:对象.方法名(方法传参)
示例:
'abc'.isalpha() # 是正确的语法
123.isalpha() # 是错的
常用字符串方法
方法 | 说明 |
---|---|
S.isdigit() | 判断字符串中的字符是否全为数字 |
S.isalpha() | 判断字符串是否全为英文字母 |
S.islower() | 判断字符串所有字符是否全为小写英文字母 |
S.isupper() | 判断字符串所有字符是否全为大写英文字母 |
S.isspace() | 判断字符串是否全为空白字符 |
S.center(width[,fill]) | 将原字符串居中,左右默认填充空格 |
S.count(sub[, start[,end]]) | 获取一个字符串中子串的个数 |
S.find(sub[, start[,end]]) | 获取字符串中子串sub的索引,失败返回-1 |
S.strip() | 返回去掉左右空白字符的字符串 |
S.lstrip() | 返回去掉左侧空白字符的字符串 |
S.rstrip() | 返回去掉右侧空白字符的字符串 |
S.upper() | 生成将英文转换为大写的字符串 |
S.lower() | 生成将英文转换为小写的字符串 |
S.replace(old, new[, count]) | 将原字符串的old用new代替,生成一个新的字符串 |
S.startswith(prefix[, start[, end]]) | 返回S是否是以prefix开头,如果以prefix开头返回True,否则返回False, |
S.endswith(suffix[, start[, end]]) | 返回S是否是以suffix结尾,如果以suffix结尾返回True,否则返回False |
以下是不常用的 | |
S.title() | 生成每个英文单词的首字母大写字符串 |
S.isnumeric() | 判断字符串是否全为数字字符 |
空白字符:是指空格,水平制表符(\t),换行符(\n)等不可见的字符
13、格式化字符串中的占位符和类型码
占位符类型码 | 意义 |
---|---|
%s | 字符串 |
%r | 字符串,使用repr 而不是str |
%c | 整数转为单个字符 |
%d | 十进制整数 |
%o | 八进制整数 |
%x | 十六进制整数(字符a-f小写) |
%X | 十六进制整数(字符A-F大写) |
%e | 指数型浮点数(e小写),如2.9e+10 |
%E | 指数型浮点数(E大写),如2.9E+10 |
%f, %F | 浮点十进制形式 |
%g, %G | 十进制形式浮点或指数浮点自动转换 |
%% | 等同于一个%字符 |
14、占位符和类型码之间的格式语法
格式:% [- + 0 宽度.精度] 类型码
说明:
- 左对齐(默认是右对齐)
+ 显示正号
0 左侧空白位置补零
宽度: 整个数据输入的宽度
精度: 保留小数点后多少位(默认是6位)
示例:
'%10d' % 123 # ' 123'
'%-10d' % 123 # '123 '
'%10s' % 'abc' # ' abc'
'%05d' % '123' # '00123'
'%-+5d' % 123 # '+123 '