1.什么是字符串(str)
字符串是容器型数据类型(序列),不可变,有序
不可变 - 不支持增删改;有序 - 支持下表操作
容器型数据类型即能保存多个值的数据类型
python中的字符串是用单引号或者双引号引起来的字符级;引号里面的基本单元叫字符
str1 = ‘hello’
2.字符
python中只有字符概念,没有字符类型
str2 = ‘a' 字符串类型
1)普通字符:数字、字母、中文、普通符号(标点符号,计算机键盘上的符号)等
2)转义字符:
在特定的符号前加\来表示特殊功能或者特殊意义的字符:
\n - 换行
引号前加\表示引号本身不是字符串开头或结尾的标志, ' - 单引号字符, " - 双引号本身
\ - 反斜杠本身(让一个反斜杠失去转义的功能)
\t - 制表符
阻止转义:
在字符串的最前面加r/R,能阻止字符串中所有的转义字符转义
3)编码字符:在字符串中用\u四位的十六进制数来表示一个字符
\u字符编码值得16进制数
字符编码:
计算机本身只有直接存储数字的能力(村数字的二进制的补码),为了能够存储数字以外的符号,开发人员给每个字符对应一个固定的数字用来对字符进行存储。每个字符对应的固定的数字就是字符的编码值。每个字符和数字的一一对应关系就是字符编码表,常见的编码表:ACSII编码表,Unicode编码表
Unicode编码表采用2个字节对字符进行编码,包含了ASCII编码表
chr函数:chr(编码值) - 获取编码值对应的字符
ord函数:ord(字符) - 获取指定字符对应的编码
注意: 字符串切片的结果都是字符串
如果步长是正数,那么开始下标对应字符要在结束下标对应的字符的前面,才能取到值;
如果步长是负数,那么开始下标对应的字符要在结束下标对应的字符后面,才能取到值
切片的时候下标可以越界
'''
str2 = "abc+123"
print(str2[0:3:2])
print(str2[-1:1:-2])
print(str2[-100:100:2])
'''
1、省略步长
语法: 字符串[开始下标:结束下标] <==> 字符串[开始下标:结束下标:1]
'''
str3 = "hello world"
print(str3[3:-2])
'''
- 省略开始下标 - 步长为正从字符串开头往后获取;步长为负从字符串最后往前获取
语法: 字符串[:结束下标:步长]、字符串[:结束下标]
'''
print(str3[:5]) #hello
print(str3[:5:-1]) #dlrow
'''
3.省略结束下标 - 步长为证,取到字符串最后一个字符为止;步长为负取到第一个字符为止
语法: 字符串[:结束下标:步长]、字符串[开始下标:]
'''
print(str3[1:]) #ello world
print(str3[1::-1]) #eh
print(str3[::-1]) #倒序 dlrow olleh
'''
4.遍历字符串 - 将字符串中的字符一个一个的取出来
for 变量 in 字符串:
循环体
'''
for i in str3:
print(i)
倒序遍历
for i in range(-1, -12, -1):
print(str3[i])
联系:统计输入的字符串中,字母’a'出现的次数
str_4 = input("str:")
count = 0
for i in str_4:
if i == 'a':
count += 1
print(count)
字符串的相关操作:
1.字符串的运算:
数学运算符:+, *
字符串1 + 字符串2: 两个字符串相加 -> 将两个字符串拼接产生一个新的字符串
str1 = 'abc' + 'hello' # 字符串拼接
print(str1) # abc123
字符串正整数 / 正整数字符串: 字符串重复制定次数产生一个新的字符串
str2 = 'abc' * 3
print(str2)
2) 比较运算:>, <, >=, <=, ==,!=
针对两个字符串进行比较
字符串比较大小:从前往后逐个比,找出第一对不相等的字符,看它们的编码值谁大,哪个字符串就大
print('bbz' > 'abaa')# True
'''
应用:
判断一个字符是否是小写字母:'a' <= char <= 'z'
判断一个字符是否是大写字母:'A' <= char <= 'Z'
判断一个字符是否是字母字符:'a' <= char <= 'z' or 'A' <= char <= 'Z'
判断一个字符是否是数字字符:'0' <= char <= '9'
判断一个字符是否是中文(4e00-9fa5):'\u4e00' <= char <= '\u9fa5'
'''
统计一个字符串中大写字母的个数
str3 = "How Are You"
count = 0
for i in str3:
if 'A' <= i <= 'Z':
count += 1
print(count)
赋值运算: =,+=, *=
2. in 和 not in
字符串1 in 字符串2 - 判断字符串2中是否包含字符串1
print('abc' in '123abc') #True
print('abc' in '123ab1c') #False
print('A' in 'hell A') #True
print('A' not in 'hell A') #Flase
3. len()
len(字符串) - 获取字符串长度(字符串中字符的个数)
4.str
str(数据)- 将其他类型数据转换成字符串
所有类型的数据都可以转换成字符串
5.格式字符串:在字符串中用格式占位符代替字符串中变化的部分,然后再使用数据对变化的部分进行赋值
'''
语法: 包含格式占位符的字符串 %(数据1,数据2,...)
注意:数据的个数和类型要和前面字符串中格式占位符的个数和类型保持一致
格式占位符:
%s - 字符串
%d - 整数
%.Nf - 浮点数(N控制小数点后小数的位数)
%c - 字符
'''
name = input("请输入姓名:")
age = int(input('请输入年龄:'))
money = 3.5
B ='B'
message = "我是%s,今年%d岁,薪资:%.2fK,等级:%c"%(name,age,money,B)# 类型一一对应
print(message)
字符的对象方法
字符串.函数名()
1. 字符串.capitalize() - 将字符串中的第一个字符转换成大写字母
str1 = 'abc'
print(str1.capitalize())
2.设置对齐方式
'''
字符串.center(width, fillchar) - 让字符串在新字符串中居中,width控制新子串的宽度,fillchar是填充字符
字符串.ljust(width, fillchar) - 让字符串在新字符串中靠左,width控制新子串的宽度,fillchar是填充字符
字符串.rjust(width, fillchar) - 让字符串在新字符串中靠右,width控制新子串的宽度,fillchar是填充字符
'''
str2 = 'abc'
print(str2.center(7,'+'))
print(str2.ljust(7,'+'))
print(str2.rjust(7,'+'))
num = 5
print(str(num).rjust(3,'0'))
print(str(num).zfill(3))# 左侧填充0字符串长度为3