字符串类型
[TOC]
1.用途
记录描述性质的状态
2.定义方式
在单引号、双引号、三引号内包含的一串字符
msg='[1,2,3]'
msg=str('[1,2,3]')
数据类型转换:str可以把任意类型转换成字符串类型
3.常用操作+内置的方法
优先掌握的操作:
3.1、按索引取值(正向取+反向取) :只能取
s = "hallo woalda"
print(s[0],type(s[0])) # "h"
print(s[-1])
s[1] = "E" # 不能修改
3.2.切片(顾头不顾尾,步长)=>拷贝操作
new_s=s[1:7]
print(new_s)
print(s) #没有被改变
ps:对象为不可变的类型,说明用内置函数去改变时并没有在对象的本体上进行操作,而是拷贝另一份进行操作,
就算是赋值相同的变量名也是没有改变变量值,只是进行了覆盖,原来的变量值只会因为没有被引用而被解释器删除。
new_s=s[1:7:2] #一般默认步长为1,如果规定为2就变为步长为2
new_s=s[:7:2] #默认起始为0
new_s=s[::2] #默认起始与终点,步长为2
new_s=s[:5] #起始与步长都为默认,终点为5
print(new_s)
new_s=s[5] #需要有分号 与range(5)并不相同
new_s=s[5:2] #想做终点5,步长为2的操作,需要前面有分号,来表示起点为0,不然则成为了起点到终点的操作
new_s=s[:] #直接拷贝 新建字符串
3.3.去除字符串左右两边的空白,或是指定内容
name=' ddddd '
name_nwd=name.strip()
print(name_nwd)
d=' ## 4444 ## '
d_new=d.strip(' #')
print(d_new)
print(d) #没有改变原来的内容
4.切分,split,以某个有规律的符号为分割线进行切分,并产生新列表
egon_info='egon_dcb:egon_diaosi:egon_NB:egon_sb'
egon_info_new=egon_info.split(':')
print(egon_info_new)
print(egon_info)
5.join
egon_info=['egon_dcb', 'egon_diaosi', 'egon_NB', 'egon_sb']
res=':'.join(egon_info) #以某个符号为切分点,创立字符串
print(res)
print(egon_info)
6.成员运算in和not in
s='hello world'
print('hell 'in s)
print('hell 'not in s)#直接取反值去判定(推荐使用)
print(not 'hell ' in s)#取正常值,然后再取反
7.长度len
s='hello world'
print(len(s))
8.循环
for i in s :
print(s)
4.需要掌握的操作
1.strip、lstrip、rstrip
print("***hello***".strip("*")) 两边清除
print("***hello***".lstrip("*"))清除左边的
print("***hello***".rstrip("*"))清除右边的
2.lower、upper
msg='AbbbdJJJjjjKKJJSll'
res=msg.lower() #大变小
res1=msg.upper()#小变大
res2=msg.swapcase()#大小互换
print(res,res1,res2)
3.startswith , endswith
msg='sb is egon dsb'
print(msg.endswith('sb'))
print(msg.endswith('b'))
print(msg.startswith('sb'))
print(msg.startswith('s'))
4、replace
msg = "***egon hello***"
res=msg.replace('*','').replace(' ','')
res=msg.strip('*').replace(' ','')
print(res)
a=msg.replace('*','A',2) #可以判断从左到右要转换多少个
print(a) AA*egon hello***
3.5.format的三种玩法
3.5.1 %s的方式
name='egon'
age=18
res='my name is %s age is %s'%(name,age)
res1='data is %s%%'%70 #多加一个%取到想要的值
print(res1) #data is 70%
3.5.2format
res='my name is {}s age is {}'.format(name,age)
res='my name is {0}{1}s age is {0}'.format(name,age)
print(res)
res='my name is {name} age is {age}'.format(name=18,age=111)
print(res)
#要打印出{},再套一层
res='my name is {{name}} age is {{age}}'.format(name=18,age=111)
print(res)
3.5.3f'
name='egon'
age=18
res=f'my name is {{name}} age is {age}'
print(res)
#看着简明
了解:f搭配{}可以执行字符串中的代码
res=f'{len("hello")}'
print(res)
#{}内不能有\以及
3.6.isdigit:判断字符串是否由纯数字组成
print("adsf123".isdigit()) #不是有字母
print("123".isdigit())
print("12.3".isdigit()) #不是有小数点
#可以接受有两边有空格
内置方法操作
1.find,rfind,index,rindex,count
x='hello egon egon egon'
res=x.find('egon',0,9) #-1返回值为错
res=x.find('egon123') #找不到返回-1
print(res) #在索引6的位置上找到第一个字母
res1=x.rfind('egon')
print(res1) #倒数找 一直找到最后一个的尾字母的索引位置
res2=x.index('egon123') #报错
print(res2)
print(x.rfind('egon'))
2.center,just,rjust,zfill
x='egon'
res=x.center(50,'*')
print(res)
print(x.ljust(50,'*'))
print(x.rjust(50,'*'))
print(x.zfill(50))#前面为零
3.expandtabs
print('hello\tworld'.expandtabs(1))
修改tab键的空格数,本来默认是4个,可通过内置函数改变
4、captalize,swapcase,title
print('hello world egon'.capitalize()) #整个字符串的首字母大写
print('AaddaDDDff'.swapcase()) #大小写互换
print('hello world arther'.title()) #所有单词的首字母大写
5.is其他
name='egon123'
print(name.isalnum()) #字符串由字母或是数字组成
print(name.isalpha()) #字符串只有字母组成
names='dddddaaSASSSS'
print(name.isidentifier())
6、is数字系列
#在python3中
num1=b'4' #bytes
num2=u'4' #unicode,python3中无需加u就是unicode
num3='四' #中文数字
num4='Ⅳ' #罗马数字
1、 bytes、unicode
print(num1.isdigit())
print(num2.isdigit())
print(num3.isdigit()) #F
print(num4.isdigit()) #F
7、captalize,swapcase,title
print("my name is egon".capitalize()) #My name is egon
print("AbCd".swapcase()) #aBcD
print("my name is egon".title()) #My Name Is Egon
类型总结
有一个值
有序
不可变类型