Python学习——字符串

一、字符串
字符串也是基本数据类型,是一个不可变的字符序列,字符串可以用单引号,双引号,三引号进行定义。
字符串的驻留机制,简而言之,就是相同的字符串只保留一个,后续创建相同字符串的时候,id不变,也就说没有分配新的内存空间。

a='python'
b="python"
c='''python'''

print(a,id(a))
print(b,id(b))
print(c,id(c))

运行结果
在这里插入图片描述
由运行结果可知,创建与之前相同的字符串并没有分配新的内存空间。
二、字符串的查询
(1)index(),查找子串第一次出现的位置,如果找不到,就报错ValueError。

#字符串的查找操作
s='python,python'
print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))
#
print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
在这里插入图片描述
(2)rindex(),查找子串最后一次出现的位置,如果找不到,就报错ValueError。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
print(s.rindex('py'))
# print(s.rfind('py'))

# print(s.index('a'))
# print(s.find('a'))
print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
(3)find(),查找子串第一次出现的位置,如果找不到,返回-1。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))

# print(s.index('a'))
print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
(4)rfind(),查找子串最后一次出现的位置,如果找不到,返回-1。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
print(s.rfind('py'))

# print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
print(s.rfind('a'))

运行结果
在这里插入图片描述
三、字符串的大小写转换
由于字符串是不可变序列,所以再经过大小写操作之后,字符串的id发生了变化,也就是产生了一个新的字符串。
(1)upper(),把所有的字符转为大写字母

s='hello,python'
print(s.upper())

运行结果
在这里插入图片描述
(2)lower(),把所有的字符转为小写字母

s='HELLO,python'
print(s.lower())

运行结果
在这里插入图片描述
(3)swapcase(),大写变小写,小写变大写

s='HELLO,python'
print(s.swapcase())

运行结果
在这里插入图片描述
(4)capitalize(),第一个字母大写,其他小写

s='HELLO,python'
print(s.capitalize())

运行结果
在这里插入图片描述
(5)title(),把每个单词的第一个字符转换为大写,每个单词剩余的字符转换为小写。

s='HELLO,python'
print(s.title())

运行结果
在这里插入图片描述
四、字符串的对齐操作
(1)center(),居中对齐
(2)ljust(),左对齐
(3)rjust(),右对齐
在(1)(2)(3)中,一般第一个参数是指定宽度,第二个参数是填充符,如果没有规定填充符的话,默认是空格。
(4)zfill(),右对齐,左边用0填充,这个里面只有一个参数,用于指定字符串的宽度。
在1)(2)(3)(4)中,如果设置的宽度小于字符串的长度,那么运行结果是字符串本身。

s='hello,python'
print(s.center(20,'*'))
print(s.ljust(20,'*'))
print(s.rjust(20,'*'))
print(s.zfill(20))
print(s.center(10,'*'))

运行结果
在这里插入图片描述
四、字符串的分割
split()左分割和rsplit()右分割。
split是从左边开始分割,默认分割符是空格,也可以指定分割符,同时也可以指定最大分割次数,那么剩余的部分就会成为单独的一部分。
rsplit与split的区别就在于从哪边进行分割,其他地方并无差别。
分割操作的返回值是列表。

#分割
s='hello python hello'
print(s.split(),type(s.split()))
s1='hello#python#hello'
print(s1.split(sep = '#'))
print(s1.split(sep = '#',maxsplit=1))

print(s.rsplit())
s1='hello#python#hello'
print(s1.rsplit(sep = '#'))
print(s1.rsplit(sep = '#',maxsplit=1))

运行结果
在这里插入图片描述
五、字符串判定操作
(1)isidentifier(),判断是否是合法的标识符

#字符串的判定操作
s='hello world'
print(s.isidentifier())

运行结果
因为有空格,不是合法的标识符
在这里插入图片描述
(2)isspace(),判断字符串是否全部是由空白字符组成,例如回车、空格和制表符。

#字符串的判定操作
s='hello world'
print(s.isspace())

运行结果
在这里插入图片描述
(3)isalpha(),判断字符串是否全部由字母组成。

#字符串的判定操作
s='helloworld'
print(s.isalpha())

运行结果
在这里插入图片描述
(4)isdecimal(),判断是否全部是由十进制的数字组成

#字符串的判定操作
s='123456'
print(s.isdecimal())

运行结果
在这里插入图片描述
(5)isnumeric(),判断是否全部是由数字组成

#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦ'
print(s.isnumeric())

运行结果
在这里插入图片描述
(6)isalnum(),判断是否全由字母和数字组成

#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦABCdefg'
print(s.isalnum())

运行结果
在这里插入图片描述
六、字符串的替换与合并
(1)字符串的替换,replace()
可以有三个参数,第一个参数是被替换的,第二个是替换的内容,第三个参数是最大被替换的次数。

#替换
s='hello,world,world'
print(s.replace('world','python'))
print(s.replace('world','python',1))

运行结果
在这里插入图片描述
(2)join(),合并,将列表或元组中的字符串合并成一个字符串。

lst=['hello','world','python']
t=('hello','world','python')
print(' '.join(lst))
print(' '.join(t))

运行结果
在这里插入图片描述
看一下如果输入的是字符串的话,输出的结果是什么

print('*'.join('python'))

运行结果
在这里插入图片描述
七、字符串的比较操作
需要用到运算符。比较的规则是,首先比较第一个字符,第一个字符若相同,则比较下一个,第一个字符不相同,那么后续字符将不再被比较。依次类推。
比较原理是,两个字符进行比较时,比较的是它们的原始值,使用内置函数ord可以获得字符的原始值,同理,也可以根据chr去获得原始值所对应的字符。

#比较
s1='hello'
s2='he'
print(s1>s2)
print(ord('a'))
print(chr(97))

运行结果
在这里插入图片描述
八、字符串的切片操作
因为字符串是不可变类型,所以字符串不具备增删改的操作,所以说切片之后的字符串是一个新的字符串,即切片操作将产生新的对象

#字符串的切片操作
s='厚德博学,追求卓越'
print(s,id(s))
s1=s[:4]
print(s1,id(s1))
s2=s[5:]
print(s2,id(s2))
s3=','
ns=s1+s3+s2
print(ns,id(ns))

运行结果
在这里插入图片描述
完整切片写法,s=[起始索引:结束索引:步长]

九、格式化字符串
(1)使用%作为占位符

#占位符
#使用%作为占位符
name='A'
age=28
print('我的名字是%s,我今年%d岁'%(name,age))

运行结果
在这里插入图片描述
(2)使用{}作占位符(format方法)或者前面加一个f

#占位符
#使用{}作为占位符
name='A'
age=28
print('我的名字是{0},今年{1}岁'.format(name,age))
#前面添加一个f
print(f'我的名字是{name},今年{age}岁')

运行结果
在这里插入图片描述
(3)宽度与占位符

#占位符
print('%10d'% 10)
print('0123456789')

运行结果
在这里插入图片描述
浮点型数据

#占位符
#保留小数点后三位
print('%.3f'%3.333333)

运行结果
在这里插入图片描述
十、字符串的编码与解码
编码是指将字符串转化为二进制。
解码是将二进制转化为字符串。
编码和解码的方式要相同。

s='泰酷啦'
byte=s.encode(encoding='UTF-8')
print(byte)
print(byte.decode(encoding='UTF-8'))

运行结果
在这里插入图片描述
十一、总结
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值