1. 字符串
1.1. 什么是字符串
字符串是python内置的一种容器型数据类型(序列),不可变,有序;将单引号或者双引号作为容器,里面可以根据情况放多个字符。
- 不可变:指字符串内容的值和顺序不可变
- 有序:一旦字符串确定,字符串中字符的位置就固定。
1.2.字符
字符串中的内容叫字符。(python中只有字符的概念,没有字符对应的数据类型)
字符串的基本单元就是字符,又叫字符串的元素。
a. 基本字符 -数字、字母、常用符号、中文等等
b. 转义字符 -通过转义符号\后面跟不同的符号来表示特殊功能或者意义的字符。例:\n换行 \‘ 一个单引号
阻止 转义:在字符串的最前面加R/r,可以阻止字符串的转义字符转义
c. 编码字符 -\u后面跟4位的十六进制数,来表示一个字符。这个4位数的16进制对应的值是字符的编码值
1.3. 字符编码
python中的字符采用的是Unicode编码
计算机中存储数据的时候只能存数字,而且存的是数字的补码。
编码:每个字符在计算机中存储时都会对应一个固定且唯一的数字,这个数字就是这个字符的编码,每个字符和数字得 一一对应关系,就是编码表常见的编码表:ascii表和Unicode 编码表。
ASCII码表支队数字字母、英文字符、英文符号进行编码。
Unicode编码表是对ASCII码表的扩充,能对世界上所有的字符进行编码(4e00-9fa5)汉字范围
chr(编码值) -获取编码值对应的字符
ord(字符) -获取字符对应的编码值,注意:字符值就是长度为1的字符串
1.4. 获取字符
获取字符就是去除字符串内容
1.4.1. 获取单个字符
a. 语法: 字符串[下标]
说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[] -固定写法
下标 -又叫索引,一旦字符串确定,那么字符串中每个字符都会对应一个下标,表示这个字符在字符串中的位置,下标的范围是0字符串长度-1,0表示第一个,1表示第二个,以此类推。下标的范围还可以是-1-字符串长度减一,-1表示倒数第一个。
注意:获取单个字符的时候下标不能越界
1.4.2 获取部分字符(字符串切片)
a. 语法:字符串[开始下标:结束下标:步长] -从开始下标开始,获取到结束下标为止,每次下标增加步长值
b. 说明:字符串 - 可以是字符串值,也可以是字符串变量,结果是字符串的表达式等都可以
[] -固定写法
开始下标、结束下标 -下标值,开始下标对应的字符可以取到,结束下标对应的字符一定取不到。(步 长为正,省略开始下标,从第一个字符往后取;步长为负,从最后往前取。)
步长 -整数,可正,可负。(省略步长,步长默认为1)
c. 注意,下标可以越界,如果步长为正(从前往后获取),开始下标对应的字符要在结束下标对应的字符之前。步长为负(从后往前获取),开始下标对应的字符要在结束下标对应的字符之后。
1.5. 遍历字符串
一个一个去除所有的字符
直接遍历
for 变量 in 字符串:
循环体-
通过遍历下标来遍历字符串:
for index in range(字符串长度)
字符串[index]index=0
while index<len(str):
print(index,str[index])
index+=1
1.6. 字符串相关运算
数学运算:字符串支持加法运算和乘法运算
语法:字符串1+字符串2 -将两个字符串拼接在一起产生一个新的字符串。
乘法运算:字符串正整数 /正整数字符串 -指定字符串重复指定次数,产生一个新的字符串。-
比较运算符:字符串支持所有的比较运算符
==, !=判断两个字符串是否相等。
'>', '<'比较两个字符串的大小:让两个字符串中同位置的字符一一比较,找到第一对不相等的字符,判断编码值的大小。(从前往后)应用:判断一个字符是否是字母 'a' <= str <= 'z' or 'A'<= str <='Z'
判断一个字符是否是数字
判断一个字符是否是中文(4e00~9fa5)
#输入任意字符串,统计输入内容中,字母的个数
str1 = 'abcd2ffe4'#input(' input str,please:')
count = 0
for index in range(len(str1)):
if 'a' <= str1[index] <= 'z' or 'A' <= str1[index] <= 'Z':
count += 1
print(str1[index],end='')
print()
print(count)
new_str=str1.capitalize()
print(new_str)
print('===============================')
1.7. in 和 not 操作
字符串1 in 字符串2 -判断字符串1是否在字符串2中(判断字符串2是否包含字符串1)
字符串1 not in 字符串2 -判断字符串1是否不在字符串2中(判断字符串2是否不包含字符串1)
print('abc' in 'abc123===') #True
print('abc' in 'a342bc') #False
print('abc' not in 'a1234dcbc') #True
1.8. 常用函数
- len() -求字符串的长度
- str() -将其他类型的数据转换成字符,所有数据都能转换成字符串。
- int(str) -将字符串转换成整数,str去掉引号必须是整数
- float(str) -将字符串转换成浮点数,str去掉引号必须是浮点数或者整数
- bool(str) -经常用于判断字符串是否为空。当str为空时,输出0.
1.9. 字符串的对象方法
语法:字符串.方法() -例如:str.capitalize()
1.10. 格式字符串
在字符串中通过格式占位符来表示字符串中变化的部分
语法:包含格式占位符的字符%(给格式占位赋值的数据列表)
说明:
格式占位符:
%s -变化的值是字符串
%d -整数
%.Nf -浮点,N可以约束小数点后面的小数位数,N为正整数。
%c -字符,可以把整数转换成字符
name=input('name:')
age=int(input('age:'))
message='%s今年%d岁' %(name,age)
2.常用对象方法
- count
字符串1.count(字符串2) -统计字符串2在字符串1中出现的次数
str1= i love you you you
str1.count('you')
#打印字符串中出现最多的字符,和对应的次数。例如:'howareyou'打印'o',2次
str1 = 'helloworld'#input("input string:")
max_num = 0
max_char = ''
for char in str1:
count = str1.count(char)
if count>max_num:
max_num = count
max_char = char
print(max_char,max_num)
- find()
字符串1.find(字符串2) -在字符串1中找字符串2第一次出现的位置,如果找不到,输出-1,找到了返回第一个字符的下标
print(str1.find('you',-8,-2)) -在字符串1中开始下标到结束下标的范围查找字符串2第一次出现的位置(不会输出结束下标)
index()的功能和find()一样,只是如果字符串2不存在的时候会报错
#在字符串中’helloworld‘,找到所有l出现的下标
str1 = 'helloworld'
str2='l'
start_index = 0
while 1:
index = str1.find('l',start_index)
if index == -1:
break
else:
print(index,end= '')
start_index = index+len(str2)
isdigit() -判断字符串是否只有数字
print('83'.isdigit())isnumeric() -判断字符串1是否是数字组合(可以检查中文数字)
print('壹仟'.isnumeric())join()
字符串1.join(序列) -将序列中的元素用字符串1连接在一起产生一个新的字符串
print(‘’.join('abc')) 输出:ab*c
练习3: 自己实现join的功能, 给字符串1, 和字符串2,用字符串1将字符串2中的所有的字符串连接起来。例如: str1 = 'aaa', str2 = '123', 输出: '1aaa2aaa3'
print('============练习3=============')
str1 = 'aaa'
str2 = '123'
方法1
str3 = ''
for char in str2:
str3 += char + str1
print(str3[:-len(str1)])
方法2
str3 = ''
for index in range(len(str2)):
if index == len(str2) - 1:
# 如果是最后一个字符就不拼str1
str3 += str2[index]
else:
# 如果不是最后一个字符就拼接str1
str3 += str2[index] + str1
print(str3)
#输入一个字符串,将字符串里面的数字字符用‘+’连接起来
str1 = 'ab23bffhsh23dbahdab90' #声明字符串str1
str2 = '+' #声明字符串str2,
str3 = '' #声明一个空串,用于存放字符串1中的数字字符。
for char in str1: #遍历字符串1
if '0' <= char <= '9': #如果取出来的字符是数字,就把它存放在字符串3中
str3+=char
print(str2.join(str3)) #把字符串2加入到字符串3中(join函数)
replace(old,new,count)
split(字符串2) 在字符串1把字符串2作为切点,将字符串1切割
print('shsjsj111askdhfkj111aksfk111nnmm'.split('111'))