什么是字符串 str
1)
字符串是python提供的容器型数据类型(序列),不可变、有序的。
不可变 - 不支持增删改;有序 - 支持下标操作
一个字符串可以包含多个字符
2)
python 中的字符串是用单引号或者双引号引起来的字符集,引号里面的每个基本单元叫字符
str1 = 'hello'
2.字符
python中只有字符的概念,没有字符的类型
1)普通字符:数字,字母,普通符号,中文,日文等
str2 = '123a and 你好!@!%& '
2)转义字符
在特定的符号前加\来表示特殊功能或者特殊意义的字符
\n( 换行(相当于按了回车)
' - 单引号字符(不是字符串开头/结尾的标志)
" - 双引号字符(不是字符串开头/结尾的标志)
\ - 表示反斜杠本身(让一个反斜杠失去转义的功能)
\t - 制表符(相当于按了tab)
\r
str3 = '123\nabc'
print(str3)
str4 = '\t123\'\nabc\"\\none'
print(str4)
阻止转义
在字符串的最前面加 r/R,能够阻止字符串中所有的转义字符转义
str5 = r'\twqe\nqrew\nyou\"'
print(str5)
3)编码字符
在字符串中用‘\u四位的十六进制数’来表示一个字符
\u 字符编码值的16进制数
字符编码:
计算机本身只有直接存储数字的能力(存数字的二进制的补码),为了能够存储数字以外的符号,
开发人员给每个字符对应一个固定的数字用来对字符进行存储。每个字符对应的固定数字就是字符的编码值。
每个字符和数字的一一对应关系就是字符编码表,常见的编码表的有:ASCII码表、Unicode编码表
ASCII码表:采用一个字节对字符进行编码:0-127
Unicode编码表:采用两个字节对字符进行编码:包含了ASCII表
chr函数:chr(编码值) - 获取编码值对应的字符
print(chr(100),chr(0x6e00))
a - 97 b - 98
ord函数:ord(字符) - 获取指定字符对应的编码
print(ord('高'),ord('鹏'))
str6 = '1234\u1234\u4e11'
print(str6)
练习:
for code in range(0x30a0,0x30ff):
print(chr(code))
2.字符串操作 : 查(获取字符)
1) 获取单个字符
"""
语法:
字符串[下标] --- 获取指定下标对应的字符
说明:字符串 --- 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[] --- 固定写法
下标 --- 又叫索引,值是整数;字符串确定后,字符串中的每一个字符都有一个确定的下标/索引表示这个字符在字符串中的位置。
python中下标有两种,位置从前往后数0字符串长度-1,位置从后往前数-1负的字符数长度。
"""
空格也代表一个字符
注意:获取单个字符的时候下标不能越界 中括号里面的下标不能超过字符串的字符数
str7 = "hello"
print(str7[3],str7[4])
str8 = 'ab \ncd'
print(str8[3],str8[5])
2)获取单个字符(字符串切片)
"""
语法:
字符串[开始下标:结束下标:步长]
从开始下标开始获取,每次增加步长取下一个值;取到结束下标前为止(结束下标对应的值取不到)
说明:字符串 --- 结果是字符串的表达式(字符串值、字符串变量、运算结果是字符串)
[] 和 :--- 固定写法
开始下标 --- 下标,整数。能取到对应的字符
结束下标 --- 下标,整数。对应的字符取不到
步长 --- 整数,如果步长是正数,从前往后取;如果是负数就是从后往前取
注意:1.字符串切片的结果都是字符串,
2.如果步长是正数,开始下标对应的位置要在结束下标对应的字符前面;步长是负数,开始下标对应的位置要在结束下标对应的字符后面。
3.切片时下标可以越界
"""
str9 = 'abc 123'
print(str9[0:3:1])
'''
- 获取部分字符的简写
1.省略步长
语法:
字符串[开始下标:结束下标] --- 相当于步长是1
2.省略开始下标
语法:
字符串[:结束下标:步长] --- 步长为正从字符串开头往后取,步长为负从字符串最后往前取
字符串[:结束下标:]
3.省略结束下标
语法:
字符串[开始下标::步长] --- 步长为正,取到字符串最后一个字符;步长为负取到第一个字符为止。
字符串[开始下标:]
4.字符串倒序
print(str8[::-1]) 倒序
'''
4) 便利字符串 --- 将字符串的字符一个一个的取出来
'''
for 变量 in 字符串:
循环体
'''
直接遍历,变量取到的就是每个字符
for chr in str9:
print(chr,end='')
简洁遍历,通过遍历下标遍历字符
for index in range(7):
print(str(index))
for index in range(-1,-10,-1):
print(index,str9[index])
练习:统计输入小写字母a出现的次数
value = input('请输入')
count = 0
for char in value:
if chr == 'a':
count += 1
print(count)
字符串相关操作
1. 字符串的运算:
1)数学运算符 :支持加和乘
两个字符串相加: 将两个字符串拼接产生一个新的字符串
str1 = 'abc' + 'hello' ---> abchello
两个字符串相乘:
字符串正整数/正整数字符串:字符串重复指定次数产生一个新的字符串
str = 'abc' * 3
print(str) #------> abcabcabc
2)比较运算符:所有。> < = += == != <= >=
两个字符串进行比较
print('abc' == 'abc')
str1 = 'abc'
print('abc' == str1)
比较大小时,按位置从前往后一对一比较,比较的是编码值得大小
print('abcdef' > 'az')
print('你好'>'hello') #----> True
应用:
判断一个字符是否是小写字母 'a'<=char<='z'
判断一个字符是否是大写字母 'A'<=char<='Z'
判断一个字符是否是字母 'a'<=char<='z' or 'A'<=char<='Z'
判断一个字符是否为数字 '0'<=char<='9'
判断一个字符是否为中文(4e00~9fa5) '\ue400<=char<='\u9fa5
练习:统计一个字符串中大写字母的个数
例如: How Are You!
value = 'How Are You!'
count = 0
for x in value:
if 'A' <= x <= 'Z':
count += 1
print(count)
3):赋值运算符: = += *=
str2 = '你好'
str2 = 'hello'
print(str2)
2. in 和 not in
字符串1 in 字符串2 --- 判断字符串2是否包含字符串1,原样出现
print('abc'in'abc1234') #----> True
print('A'in'hella')
print('a'not in 'hello')
3. len
len(字符串) --- 获取字符串长度(字符串中字符的个数)
print(len('abc'))
print(len('\tabc')) # --->7
#print(len(\u4e00abc)) #--->4
for index in range(len('afsajfksafksa')):
print(index)
4.str
str(数据) --- 讲其他数据类型转换成字符串
所有类型的数据都可以转换成字符串;转换的时候直接在数据的外面加引号
print(str(100)) # ---> '100'
print(str(12.55)) # ---> '12.55'
5 格式字符串
在字符串中用格式占位符代替字符串中变化的部分,然后再使用数据对变化的部分进行赋值
'''
语法:
包含格式占位符的字符串 % (数据1,数据2,....)
说明:数据的个数和类型 要和前面字符串中格式占位符的个数和类型保持一致
格式占位符: %s ---字符串
%d ---整数
%.f ---浮点数 ----%Nf--N是控制小数后小数的位数
%c ---字符/字符对应的编码值
'''
name = input('姓名')
age = int(input('请输入年龄'))
money = 3.5
# message = '我今年 岁'
#message = '我今年'+str(age)+'岁'
#print(message)
message = '我是%s,今年%d岁,薪资%.1fK,等级是%c'%(name,age,money,'A')
print(message)
字符的对象方法
字符串.函数名()
1. capitalize()
将字符串中的第一个字符转换成大写字母,不影响原字符串
str1 = 'abc'
print(str1.capitalize())
2.设置对其方式
'''
字符串.center(width,fullchar) --- 让字符串在新字符串中居中,width控制新字符串的宽度,fillchar是填充字符
字符串.rjust(width,fullchar)
字符串.ljust(width,fullchar)
字符串.zfill(width,fullchar) ---相当于字符串.rjust(width,0)
'''
str1 = 'abc'
print(str1.center(7,'*'))
print(str1.ljust(7,'*'))
print(str1.rjust(7,'='))
产生学号的时候应用
num = 15
print(str(num).zfill(3))
print(str(num).rjust(3,'0'))
1.字符串.count(字符串2) ----统计字符串1中字符串2出现的次数
print('safajdsnfkasnkn'.count('a'))
2. endswith
3. 字符串1.find(字符串2) ---- 返还字符串2在字符串1中第一次出现的下标(0~长度-1的下标),找不到为-1
print('ffrefewf'.find('e'))
字符串1.find(字符串2,startindex,endindex) --- 在指定范围内查找
print('fdsafsdsdaf',1,8)
4. 字符串.join(序列) ---- 讲序列中的元素取出来,中间用指定字符串拼接在一起产生新的字符串
new_str = '*'.join('abc')
print(new_str)
new_str = ''.join(['name','fds','ddsa'])
print(new_str)
# min 和 max
print(max('fdsanjfsa'))
6. 字符串.replace(old,new) ---- 讲字符串中指定的旧字符串全部替换成新的字符串
str1 = 'dsagfdsagfdsagdsa'
new_str = str1.replace('a','A',2) # --- 还可以跟一个替换的次数
print(new_str)
7. 字符串1.split(字符串2) --- 讲字符串1按照字符串2进行切割 返回的是列表
str1 = 'dsag fdsag fdsagdsa'
str2 = str1.split(' ')
print(str2)