字符串是由一系列字符组成的不可变序列容器,存储的是字符的编码值。
ord() # 字符 --> 编码值
chr() # 编码值 --> 字符
一、字符串字面值
- 字符串使用单引号、双引号或三引号括起来,三种形式在语义上无区别,形式上有差别;
- 单引号和双引号中的字符序列需要在一行上,三引号内的字符序列可以分布在连续的多行上(所见即所得);
- 引号嵌套使用时,可以使用不同类型的引号;
- 引号嵌套过于复杂时,需要使用转义字符;
- raw字符串:原样输出字符串内容,对转义字符不进行转义
常用转义符如下:
转义字符 | 说 明 |
---|---|
\n | 换行符 |
\0 | 空格 |
\t | 水平制表符 |
\" | 双引号 |
\’ | 单引号 |
\\ | 一个反斜杠 |
\f | 换页符 |
二、字符串拼接
1.使用“+”运算符可以完成对多个字符串的拼接,“+”可连接多个字符串并产生一个字符串对象。
print("I love "+"--->"+"Python")
2.使用“*”运算符与数字相乘,生成内容重复的字符串
print("I love Python"*3)
三、计算字符串长度
使用len()函数可以计算字符串的长度,不区分英文、数字、中文
str1 = "人生苦短,我用Python"
length1 = len(str1)
实际上,不同的字符所占的字节数是有区别的,一般来说,数字、字母、小数点、下划线和空格占一个字节,UTF-8中汉字占3个字节,GBK编码中汉字占2个字节,Python默认的编码方式是UTF-8。
length2 = len(str1.encode())
length3 = len(str1.encode("gbk"))
四、字符串截取
因为字符串属于序列,所以可以采用切片方法实现字符串的截取,语法如下:
string[start: end: step]
五、字符串的拆分与合并
按照指定的分隔符切分并返回字符串列表,maxsplit用于指定分割的次数,默认没有次数限制。
string_list = string.split(sep, [maxsplit])
将字符串序列中的元素按照指定的分隔符连接生成一个新的字符串并返回
string = sep.join(sequence)
六、字符串检索(查找)
1.count()方法
用于检索指定字符串在另一个字符串中出现的次数。如果检索的字符串不存在,则返回0,否则返回出现的次数,可选项表示检索的范围。
用法:amount = string.count(sub[, start[, end]]) # 默认start=0,end=len(string)
用例:str1 = "#Java #Python #Shell"
print(str1.count('#'))
2.find()方法
用于检索是否包含指定的子字符串。若检索的字符串不存在,则返回-1,否则返回首次出现该子字符串时的索引,可选项表示检索的范围。
用法:index = string.find(sub[, start[, end]])
用例:str1 = "#Java #Python #Shell"
print(str1.find('#'))
【注】字符串对象还提供了rfind()方法,用法与find()方法类似,只是从右边开始查找,可选项表示检索的范围。
3.index()方法
该方法与find()方法类似,也是用于检索是否包含指定的子字符串。只不过当指定的字符串不存在时会抛出异常(ValueError)。
index = string.index(sub[, start[, end]])
【注】字符串对象还提供了rindex()方法,用法与index()方法类似,只是从右边开始查找。
4.startswith()方法
检索字符串是否以指定子字符串开头,若是则返回True,否则返回False
boolean = string.startswith(sub[, start[, end]])
5.endswith()方法
检索字符串是否以指定子字符串结尾,若是返回True,否则返回False
boolean = string.endswith(sub[, start[, end]])
6.isspace()方法
检索字符串中是否包含空格,是则返回True,否则返回False
boolean = string.isspace()
7.isnumeric()方法
检索字符串中是否全为数字字符,可识别Unicode数字,全角数字,汉字数字
boolean = string.isnumeric()
8.isdigit()方法
检索字符串中是否全为数字字符,可识别Unicode数字,全角数字(双字节),byte数字(单字节)
boolean = string.isdigit()
9.isalpha()方法
检索字符串中是否全为英文字母
boolean = string.isalpha()
10.islower()方法
检索字符串中是否全为小写英文字母
boolean = string.islower()
11.isupper()
检索字符串中是否全为大写英文字母
boolean = string.isupper()
七、字符串替换
new_string = string.replace(str1, str2[, max])
该方法将字符串string中的str1替换成str2,如果max指定,则替换不超过max次。
八、字符串中的大小写转换
1.lower()方法
该方法将字符串中的大写字母转为小写字母,若字符串中没有需要被转换的字符,则原样返回,该方法返回一个新的字符串。
new_string = string.lower()
2.upper()方法/capitalize()方法
该方法将字符串中的小写字母转为大写字母,若字符串中没有需要被转换的字符,则原样返回,该方法返回一个新的字符串。
new_string = string.upper()
3.swapcase()方法
该方法将字符串中的字母大小写互换,即大写字母转小写,小写字母转大写。
new_string = string.swapcase()
4.title()方法
该方法将字符串中每个英文单词的首字母大写,非英文单词则原样返回
new_string = string.title()
九、去除字符串中的空格和特殊字符
【注】这里的特殊字符是指制表符\t,回车符\r,换行符\n
1.strip()方法
该方法用于去掉字符串左右两侧的空格和特殊字符
new_string = string.strip([chars])
# 如果指定了chars可选参数,表示去掉首尾的指定字符。
2.lstrip()方法
该方法用于去掉字符串左侧的空格和特殊字符
new_string = string.lstrip([chars])
3.rstrip()方法
该方法用于去掉字符串右侧的空格和特殊字符
new_string = string.rstrip([chars])
十、格式化字符串
利用占位符,生成一定格式的字符串
1.使用%操作符
语法格式:"%[-][+][0][m][.n]格式化字符串" % exp
参数说明:
-:指定左对齐,正数前无符号,负数前保持负号
+:指定右对齐,正数前加正号,负数前保持负号
0:指定右对齐,正数前无负号,负数前保持负号(当与m参数一起使用时,且指定宽度大于待显示字符串宽度时,用0填充空白,负号在0的左侧)
m:指定占有宽度
.n:指定小数点后保留的位数
格式化字符串:指定类型
常用的格式化字符串如下:
格式字符 | 说明 | 格式字符 | 说明 |
---|---|---|---|
%s | 字符串(采用str()显示) | %r | 字符串(采用repr()显示) |
%c | 单个字符 | %o | 八进制正数 |
%d或%i | 十进制整数 | %e | 指数(基底写为e) |
%x | 十六进制整数 | %E | 指数(基底写为E) |
%f或%F | 浮点数 | %% | 字符% |
2.使用字符串对象的format()方法
语法:string.format(args)
其中,string中的使用{}作为占位符,并且须与args参数一一对应
【注】format()方法设置了众多可选参数,作用与使用与%占位符相仿,其参数冗余繁杂、不易识记,故不再详加说明。
十一、字符串对齐
1.居中显示
string.center(width[, fillchar])
# 返回一个指定宽度width且居中的字符串,fillchar为填充字符,默认为空格。
2.左对齐
string.ljust(width[, fillchar])
# 返回一个指定宽度width且左对齐的字符串,fillchar为填充字符,默认为空格(当width大于字符串长度时才会有对齐效果)。
3.右对齐
string.rjust(width[, fillchar])
# 返回一个指定宽度width且右对齐的字符串,fillchar为填充字符,默认为空格(当width大于字符串长度时才会有对齐效果)。
4.补0右对齐
string.zfill(width)
# 返回长度为width且右对齐的字符串,左侧用0填充(当width大于字符串长度时)
十二、字符串大小比较
字符串的大小比较,比的是两个字符串中对应字符的编码值,一旦不同则返回比较结果
print("悟空" > "八戒")
print("abc" > "ABC")
print("aac" < "abc")
十三、字节串(bytes)
在python3中引入了字节串的概念,与str不同,字节串以字节序列的形式表达数据,用来处理二进制数据。
- 普通的ASCII编码字符串可以在前面加b转换成字节串,如:b"python"
- 字符串转换为字节串的方法:encode()
- 字节串转换为字符串的方法:decode()