字符串
字符串也是容器型数据类型;字符串’‘或者"" ‘’’’’’ 作为容器。里面可以是任意字符
区别:’’’’’’ 和 “”"""" 引起来的字符串可以直接敲回车换行
特点:不可别的(不支持增删改);有序的(支持下标操作)
字符串的元素:字符串里的每个单元,任何符号都可以
字符
- 普通字符:包括所有的符号,例如:数字、字母、中文、各种图形符号等
str='123'
str1='ad'
str2='@@##%'
str3='中文'
- 转义字符:和\结合后具有特殊功能和特殊意义的字符,就是转义字符。(转义字符,不是python里面的特有的)
\n --回车换行 print('ad\njih')
\' --表示一个' print('123\'zxc')
\" --表示一个" print('123\"zxc')
\\n --表示一个\n print('1231\\nsasd')
\t --表示一个水平制表符 print('ad\tasda')
\u位的16进制数---编码字符
str='123\u4effabc'
print(str)
注意:任何一个转义字符的长度是1
- 阻止转义
python中在字符串的最前面加r/R,可以让这个字符串所有的转义字符的功能消失
str='r\tasda'
print(str)
字符串的相关操作
- 获取字符
字符串获取字符和列表获取元素的方法是一样的
获取单个字符
str1='人生苦短,及时行乐'
print(str1[5])
str2='how are\n you!'
print(str2[-4])
- 切片
message='曾经有一份真挚的爱情摆在我面前,我没有珍惜。'
print(message[1:]) #经有一份真挚的爱情摆在我面前,我没有珍惜。
print(message[2:10]) #有一份真挚的爱情
print(message[-10:-2:-1]) #
- 遍历
message2='你以为就是你以为的'
for x in message:
print(x)
for index,item in enumerate(message2):
print(index,item)
加法和乘法运算
# 字符串1+字符串2 ---将俩个字符串合并成一个新的字符串
str1='abc'+'123'
print(str1) #abc123
# 字符串*N/N*字符串 ---字符串重复N次,产生新的字符串
str='123'*3
print(str) #123123123
比较运算
俩个字符串比较大小比较的是第一对不相等的字符的编码值大小
判断是否是小写字母:‘a’<=x <=‘z’
判断是否是大写字母:‘A’<=x <=‘Z’
判断是否是字母:‘a’<=x <=‘z’ or ‘A’<=x <=‘Z’
判断是否是数字字符: ‘0’<=x <=‘9’
判断是否是中文字符: ‘\u4e00’<=x <=’\u9fa5’
in 和 not in
字符 in 字符串 —判断字符串中是否有指定的字符
字符串1 in 字符串2 —判断字符串2中是否包含字符串1
print('s' in 'sdf') #True
print('how' in 'ahao are you ') #False
- 计算机数据存储
计算机在存储数据的时候,只能直接存储数字数据,而且以二进制的形式存储的数字
- 字符编码
为了能够让计算机存储字符,给每一个字符关联一个具体的数字,在需要存储字符的时候只需要存储这个字符对应对应的数字;
每个字符对应的数字就是字符的编码值。
- 编码表
保存字符和数字一一对应关系的表就是字符编码表,常用的字符编码表,一个是ASCII码表、Unicode编码表
ASCII码表:采用1个字节对128个字符进行编码,其中包括常用的英文符号、数字和字母。其他数字的编码在字母的前面,大写字母
的编码在小写字母的前面,大写字母和小写字母不连续。
Unicode码表:万国码,包含了世界上所有国家所有民族所有语言的符号。前128个字符就是ASCII码表的
其中中文的编码范围:4e00~9fa5
编码字符:\u4e00四位的16进制数(这儿的4位的16进制数就是字母的编码值)
print(’\u9fa5’)
编码值和编码对应的字符函数
chr函数
chr(编码值) -获取编码值对应的字符(编码值是10进制)
for x in range(0x4e00,0x9fa5):
print(chr(x),end=' ')
ord函数
ord(字符) --获取字符的编码值
print(ord('我')) #25105
格式字符串
语法:带有格式占位符的字符串 %(数据1,数据2,数据3……)
说明:格式占位符 —字符串中不同类型数据的占位符号,固定的
%s --字符串的格式占位符
%d --整数的格式占位符
%f --浮点数的个数占位符
%c --字符的个数占位符(可以给字符,也可以是字符编码值)
%.Nf --浮点数的占位符,并且控制小数点有N位小数
%() --固定写法
数据 --最后给字符串中不确定内容赋值的数据;数据的个数和类型要和前面占位符的个数以及 类型要保持一致
name=input('输入姓名:')
age=int(input('输入年龄'))
sex=input('输入性别')
score=int(input('输入成绩'))
message='%s 性别:%s ,年龄:%d ,今天考了%d分。'%(name,sex,age,score)
print(message)
message2='金额: %f' %(12)
print(message2) #金额: 12.000000
message3='金额: %2f' %(12.2345)
print(message3) #金额: 12.234500
message4='97:%c' %('a')
print(message4) #97:a
message5='97: %c' %(97)
print(message5) #97: a
format字符串(f-string)
用法1:format带{}的字符串.format(数据1,数据2,数据3,……)
message='大家哈,我是{},今年{}岁,我是一只{}'.format('阿红',3,'银狐')
print(message)
用法二:{下标}
message='大家好,我是{0},我的名字是{0},今年{1}岁'.format('边旭',18)
print(message)
用法三:{key}
message='大家好,我是{name},我的名字是{name},今年{age}岁'.format(name='边旭',age=18)
print(message)
加约束:{:约束}/{下标:约束}/{key:约束}
1)约束小数位数 - {:.Nf}
message='a:{:.1f},b{:.2f}'.format(10,20)
print(message)
message='a:{:.1f},b{:.2f}'.format(10,20)
print(message)
print('a:{0:.1f},b{1:.2f},a:{0:.3f}'.format(10,20))
print('我的名字是{name},月薪:{money:.2f}'.format(name='余婷',money=6677))
2)控制显示正负号 {:+}
print('a:{:+},b:{}'.format(10,-20))
3)控制数字的宽度{:x>N}/{:X<N} --N表示数据最终的位数,x是填充数据,>表示填充在原数据的左边,<填充在右边
(x没有表示用空格占位)
print('a:{:>5},b:{:<5}!'.format(10,20)) #a: 10,b:20 !
print('a:{:s>5},b:{:s<5}!'.format(10,20)) #a:sss10,b:20sss!
4)数字用逗号隔开:{:,}
print('a:{:,},b:{:,}'.format(100,200000)) #a:100,b:200,000
5)显示百分比:{:.N%} --N控制百分制小数点的位数
print('a:{:2%},b:{:1%}'.format(0.12,0.345)) #a:12.000000%,b:34.500000%
f-string的用法 f{数据}’
name='小花'
age=18
message=f'姓名:{name},年龄:{age}'
print(message)
字符串的常用方法
- center/rjust/ljust
str='abc'
print (str.center (7, 'x')) #xxabcxx
print(str.rjust(7,'x')) #xxxxabc
print(str.ljust(7,'x')) #abcxxxx
zfill()相当于rjust填充字符是固定0
print(str.zfill(7)) #0000abc
练习输入学生编号。产生对应的学号 Python2003009
stu_number=input('输入你的学号:')
str='python2003'
print(str+stu_number.zfill(3))
- count 统计字符串中某个字符或者字符串出现的次数
str='sdfadswefasf'
print (str.count ('s')) #3
# 在下标0-10的范围内统计
print(str.count('s',0,18)) #3
- index/find 查找字符或字符串下标(index没有会报错,find返回-1)
print(str.index('sw')) #5
- join 拼接字符串
字符串.join(序列) --将序列中的元素用字典字符串拼接成一个新的字符串
序列中的元素必须全是字符串
list1=['name','age','sex']
print('*'.join(list1)) #name*age*sex
print('+'.join('abc')) #a+b+c
print('='.join({'a':'10','b':'20'})) #a=b
- lstip/rstrip/strip --删除空白
message='\t abc \t 123'
print(r'原字符串:',message) # abc 123
print(r'lstrip:',message.lstrip()) #abc 123删除前面的空格
print(r'rstrip:',message.rstrip()) # abc 123 删除后面的空格
print(r'strip:',message.strip()) #abc 123 删除左右的空格
- maketrans()和translate #创建映射表: a-1;b-2
table=str.maketrans('ab','12')
new_str1='abc'.translate(table) #按照指定的映射表替换原字符串中的字符
print(new_str1)
- replace
字符串1.replace(字符串2,字符串3,1)--将字符串1中的字符串2全部替换成字符串3,1代表次数
message='how are you?i an file.and you!'
new_str2=message.replace('you','me')
print(new_str2) #how are me?i an file.and me!
- split
字符串1.split(字符串2)--将字符串2作为切割点对字符串1进行分割
message='how are you?i an file.and you!'
print(message.split('?')) #['how are you', 'i an file.and you!']