字符串特点:不可变,有序序列。
一 不可变类型
二 字符串的序列操作
1 索引
2 切片
3 拼接和重复
4 赋值
5 遍历
三 字符串的方法
1 查找
方法 | 功能 |
---|---|
find | 查找,返回从左第一个指定字符的索引,找不到返回-1 |
rfind | 查找,返回从右第一个指定字符的索引,找不到返回-1 |
index | 查找,返回从左第一个指定字符的索引,找不到报错 |
rindex | 查找,返回从右第一个指定字符的索引,找不到报错 |
count | 计数功能,返回自定字符在字符串当中的个数 |
2 拆分
方法 | 描述 |
---|---|
partition(mystr) | 把mystr以str分割成三部分,str前,str自身和str后 ,返回元组类型 |
splitlines | 按照行分隔,返回一个包含各行作为元素的列表,按照换行符分割 |
split | 按照指定的内容进行分割,maxsplit:默认将指定的所有的内容进行分割,可以指定 maxsplit的值,如果maxsplit=1 表示只按照第一个指定内容进行分割,后面剩余的不分割。 默认按空格分割,返回列表类型 |
3 替换
方法 | 描述 |
---|---|
replace | 从左到右替换指定的元素,可以指定替换的个数,默认全部替换 |
translate | 按照对应关系来替换内容 from string import maketrans |
4 修饰
方法 | 描述 |
---|---|
center | 让字符串在指定的长度居中,如果不能居中左短右长,可以指定填充内容,默认以空格填充 |
ljust | 让字符串在指定的长度左齐,可以指定填充内容,默认以空格填充 |
rjust | 让字符串在指定的长度右齐,可以指定填充内容,默认以空格填充 |
zfill | 将字符串填充到指定的长度,不足地方用0从左开始补充 |
strip | 默认去除两边的空格,去除内容可以指定 ,同时可以去除多个符号 |
rstrip | 默认去除右边的空格,去除内容可以指定 |
lstrip | 默认去除左边的空格,去除内容可以指定 |
5 变形
方法 | 描述 |
---|---|
upper | 将字符串当中所有的字母转换为大写 |
lower | 将字符串当中所有的字母转换为小写 |
swapcase | 将字符串当中所有的字母大小写互换 |
title | 将字串符当中的单词首字母大写,单词以非字母划分 |
capitalize | 只有字符串的首字母大写 |
expandtabs | 把字符串中的 tab 符号(' ')转为空格,tab 符号(' ')默认的空格数是 8 |
# 需求:用户输入验证码
r_code = "R ULT"
code = input("请输入验证码(不区分大小写):")
if code.upper() == r_code:
print("验证码正确")
6 判断
方法 | 描述 |
---|---|
isalnum | 判断字符串是否完全由字母或数字组成 |
isalpha | 判断字符串是否完全由字母组成 |
isdigit | 判断字符串是否完全由数字组成 |
isupper | 判断字符串当中的字母是否完全是大写 |
islower | 判断字符串当中的字母是否完全是小写 |
istitle | 判断字符串是否满足title格式 |
isspace | 判断字符串是否完全由空格组成 |
startswith | 判断字符串的开头字符,也可以截取判断 ,如果截取,不包含右边界 |
endswith | 判断字符串的结尾字符,也可以截取判断 |
# 需求:用户输入一些符号,请统计数字个数,字母个数,以及其他符号数量。
my_str = input("随便输入一些符号:")
num_count = 0
alp_count = 0
other_count = 0
for i in my_str:
if i.isdigit():
num_count += 1
elif i.alpha():
alp_count += 1
else:
other_count += 1
四 编码和解码
-
str:用于展示
-
byte:用于传输
-
encode是编码,将字符串转换成字节码。str-->byte
-
decode是解码 ,将字节码转换成字符串。 byte-->str
s = "记得交作业~"
print(len(s)) # 6
# 编码encode():str--->bytes:默认使用utf8编码格式
# s2 = s.encode(encoding="utf8")
# print(s2)
# print(len(s2)) # 16
# 以gbk格式编码
s2 = s.encode(encoding="gbk")
print(s2)
print(len(s2)) # 11
# 接收到消息
# 解码:decode():
# s3 = s2.decode()
# print(s3)
# 以utf-8解码一个以gbk编码的信息:要不报错要不乱码
s3 = s2.decode()
print(s3)
utf-8:英文还是占1个字节,中文占3个字节
gbk:英文还是占1个字节,中文占2个字节
五 转义字符()和原生字符(R/r)
msg ='tom's phone number is 110'
print(msg)
转义字符:顾名思义改变原有字符的意义
转义字符格式: 特定字符
问题:有一篇小说,如果内部存在特殊符号,但是不希望表示出特殊含义,需要使用转义符号,但是工作量会很大。
需要使用效率更高的方式解决:原生字符
在任意字符串之前添加字母r或者R,那么当前字符串中所有转义字符在使用时都不会进行转义操作