Fork me on GitHub

字符串类型

 [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

类型总结
有一个值
有序
不可变类型

posted @ 2020-09-01 09:22  artherwan  阅读(83)  评论(0编辑  收藏  举报