2020-07-10 字符串以及数字类型内置函数

1.用途:记录描述性质的状态,例如名字,性别,国籍等

2. 定义方式:在引号('',"",''' ''',""" """)内包含一串字符串

 s='hello'  #s=str('hello')

str功能可以把任意类型转换成str类型

 res=str([1,2,3]) #"[1,2,3]"

 print(type(res))

3.常用操作加内置方法

===========================》优先掌握

1.按索引取值(正向取,反向取):只能取 不能改

s='hello word'

print(s[0],type(s[0]))  #'h'

print(s[-1])

非法操作

s[1]='E'  #不能修改  会报错

s[222]

s[11]='A'

2.切片  (顾头不顾尾,步长)===》属于拷贝操作

s='hello word'

new_s=s[1:7]

print(new_s)

print(s)



new_s=s[1:7:2]  #1 3 5

print(new_s)

print(s)


new_s=s[:7:2]

new_s=[::2]    #0 2 4 6 8 10

print(new_s)  #h l o w r d

print(s)



new_s=s[::]  #完整拷贝,只留一个冒号就可以

print(new_s)

print(s)

s='hello word'

s1=s[1::-1]  # 不显示取值  会将所有的值都取完

print(s1)        # eh


print(len(s))

s2=s[9:7:-1]  #字符串长度为10 最后一个字符的索引为9

print(s2)    #d r

统计字符串的长度len

s='hello word'

print(len(s))



res=print('sfd')

print(res)#None

4.成员运算 in 和not  in

s='hello word'

print('hel' in s )

print('egon' not in s )#语义明确,推荐使用

print(not 'egon' in s )

5.移除空白strip()  碰到不属于strip()里面的字符停下来,默认()内是空格,再从右边开始

s='\n          hello      \t '

print(id(s))      #2171590232784

new_s=s.strip()

print(new_s)

print(id(s))    #2171590232784        没有改变原字符串

去除左右两边非空白字符

s='hh#$%^&*hello word^&'.strip('h#o$%worfde^&ll*')

print(s)    打印出来是空格

6.切分split:把字符串按照某个分隔符切成一个列表

userinfo='egonn123n18n3n1:'

res=userinfo.split('n')

print(res)

res='a'


res=res.split('a')

print(res)

纯字符串组成的列表 (把列表按照某个格式切分成一个字符串)

p=['11','22','33','44','55']

res=':'.join(p)

print(res)

print('a a a a a'.split('a'))




res='my name is {x}{x}{y} my age is {y}{y}'.format(x=name,y=age)

print(res)

======================>需要掌握的操作

1.strip,lstrip,rstrip

print('*****hello****'.strip("*"))

print('*****hello****'.rstrip("*"))  #去除右边的字符

print('*****hello****'.lstrip("*"))  #去除左边的字符

2.lower,upper

msg='FGfFgjhjhFGfG'

res=msg.lower()    #全部变小写

res1=msg.upper()  #全部变大写

print(res,res1)

res=msg.swapcase()  #大小写互相转换

print(res)

3.startswith,endswith  判断一个字符是否为另一个字符串的首位或者末尾

msg='zhikun is Dsb'

print(msg.startswith('sb'))

print(msg.startswith('zhi'))

print(msg.endswith('sb'))

4.format的三种玩法

4.1 %s的方式

name='egon'

age=18

res1='my name is %s my age is %s'%(name,age)

print(res1)

4.2 formate的方式

name='egon'

age=18

res1='my name is {} my age is {}'.format(name,age)        根据位置一一对应

res2='my name is {0}{0}{0} my age is {0}{0}{0}{0}{0}{1}'.format(name,age)  根据索引对应

res3='my name is {x} my age is {y}'.format(x=name,y=age)  根据变量名一一对应

print(res1,res2,res3)

4.3 f''

name='egon'

age=18

res1=f'my name is {name} my age is {age}'  在引号内的花括号可以直接引用变量名来实现格式化输出

print(res1)

了解:f搭配{}可以执行字符串中的代码

res=f'{len("hello")}'

print(res)

f'{len("hello")}'  相当于eval 都可以去运行字符串中的代码

res1=eval('len("hello")')

print(res1)

f包含的字符串可以放到多行

name='egon'

age=18

res1=f'my name is {name}' \

      f' my age is {age}'

print(res1)

在{}内不能有\以及#

print(f'my name is {{egon}}')  #想要打印后加上{} 可以再外面再套一个花括号,不能用转译符和#


print('胜率是%s%%' %70)    #想要打印百分比符号 需要在%后再加一个%取消前一个%的功能

5.split,rsplit

zhikun_dsb='zhikun:123:18'

print(zhikun_dsb.split(":"))    #以:为切割符 将字符串切割为字典 不指定切割次数 默认从左到右全部切割

print(zhikun_dsb.split(":",1))  #以:为切割符,指定从左到右切割一次

print(zhikun_dsb.rsplit(":",1))  #以:为切割符,指定从右到左切割一次

6.join  将纯字符串的列表按照某种格式拼接为一个大字符串,

如果join内为字符串,则会在字符串的每个子字符串后加入拼接的字符。

l=['zhukun_dsb','baobao_dsb','qiqi_dsb']

yangyang='='.join(l)

yangyang1='='.join('sdaweqr')

print(yangyang)

print(yangyang1)

 o=l[1]

y=l[2]

y=list(y)

print(y)

yangyang='>'.join('qiqi_dsb')#q>i>q>i>_>d>s>b

print(yangyang)

l=['zhukun_dsb']

 res='>'.join(l)

print(res)

name='egon'

age='18'

7.replace  指定将字符串中的子字符替换成新的子字符,产生了一个新的字符串。

msg = "***egon hello***"

res=msg.replace('*','').replace(' ','')

res=msg.strip('*').replace(' ','')

print(res)

s="lxx hahah wocale lxx sb 666"

res=s.replace('lxx','sb')

 res=s.replace('lxx','sb',1)

print(res)

print(s)

8.isdigit:判断字符串是否由纯数字组成

print("asdasdjsdkf54654".isdigit())    False

print('5454564546'.isdigit())          True


了解

1.find rfind index rindex count

1.1 find :从指定范围内查找子字符串的其实索引值,找到返回该数字的索引值,找不到返回数字-1

msg='tony say hello'

print(msg.find('m'))

print(msg.find('s'))

find还可以指定查找索引的范围

print(msg.find('s',0,5))  #找不到返回数字-1

print(msg.find('s',0,6))  #找不到返回数字5

1.2 index : 与find一样 功能都是查找子字符串在字符串中的索引值,但是找不到会报错,所以一般推荐用find

print(msg.index('s'))

print(msg.index('m'))

也可以指定查找范围

print(msg.index('s',0,6))

print(msg.index('s',0,5))

1.3 rfind rindex  作用是从右到左查找子字符串在字符串中的位置,输出结果与find index 结果相同

print(msg.rfind('s'))    # 5

print(msg.rindex('s'))    #5

1.4 count 作用是统计子字符串在字符串中出现的次数

msg='tony say hello'

print(msg.count('x'))  #0

print(msg.count('l'))  #2

print(msg.count('l',0,-1))  #也可以指定查找范围

2.center ljust rjust zfill

2.1  center  作用是指定字符串的打印长度,并且字符串居中显示,不够的可以用指定的字符填充

name='tony'

print(name.center(30,'*'))  #*************tony*************      总长度为30个字符

2.2 ljust 作用是指定字符串的打印长度,并且字符串左对齐,不够的用指定字符填充

print(name.ljust(20,'='))  #tony================ 总长度为20个字符

2.3 rjust 作用是指定字符串的打印长度,并且字符串右对齐,不够的用指定字符填充

print(name.rjust(10,'&'))  #&&&&&&tony  总长度为10字符

2.4 zfill  作用是指定字符串的打印长度,并且字符串右对齐,不够的用0填充

print(name.zfill(20))  # 0000000000000000tony  总长度为20

3.expandtabs  作用是修改制表符代表空格数  疑问:制表符代表多少空格

name1='hello\tword'

print(name1)    #'hello    word'

print(name1.expandtabs(1))  #hello word

4.capatalize swapcase  title

4.1 captalize 首字母大写

name='egoN read'

print(name.capitalize())  #Egon read

4.2 swapcase  作用是将字符串的大小写转换过来

print(name.swapcase())  #EGOn READ

4.3 title  每个单词的首字母大写

print(name.title())  #Egon Read

5.is 数字系列

在python3中

num1=b'4'

print(num1)    #bytes

num2=u'4'

print(num2)  #unicode,在python3中无需加u就是Unicode

num3='四' #中文数字

print(num3)

num4='Ⅷ' #罗马数字

print(num4)

num9='III'

print(num4==num9)   False

5.1 isdigit 判断字符串是否由纯数字组成

print(num1.isdigit())

print(num2.isdigit())

print(num3.isdigit())  #False

print(num4.isdigit())  #False

5.2  isdecimal判断字符串是否为Unicode类型bytes类型无isdecimal方法

print(num2.isdecimal())  #True

print(num3.isdecimal())  #False

print(num4.isdecimal())  #False

5.3 isnumberic 判断字符串是否为unicode 中文数字 罗马数字(百度教你打的罗马字符是错误的) (bytes类型无isnumberic方法)  

print(num2.isnumeric())  #True

print(num3.isnumeric())  #True

print(num4.isnumeric())  #False

三者都无法判断浮点型

num5='4.3'

print(num5.isdigit())

print(num5.isdecimal())

print(num5.isnumeric())

全部为False

总结:最常用的是isdigit,可以判断bytes和Unicode类型,这也是最常见的数字应用场景

如果要判断中文数字或罗马数字,则需要用到isnumeric。

6 is其他

name='tony123'

print(name.isalnum())    #字符串中既可以包含数字也可以包含字母

# True

print(name.isalpha())    #字符串是否只包含字母

# False

print(name.isidentifier())  #       ???

# True

print(name.islower())    #字符串是否为纯小写

print(name.isupper())    #字符串是否为纯大写

print(name.isspace())    #字符串是否全为空格

print(name.istitle())    #字符串中的单词首字母是否全为大写

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。