字符串的基本应用

'''字符串的驻留机制
    字符串的常用操作
    字符串的比较
    字符串的切片操作
    格式化字符串
    字符串的编码转换'''

#字符串:在Python中字符串是基本数据类型,是一个不可变的字符序列
#字符串驻留机制:仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,
#Python的驻留机制对相同的字符只保留一份拷贝,后续创建相同字符时不回开辟新空间,而是把该字符串的地址赋给新的变量
a='python'
b="python"
c='''python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
'''驻留机制的几种情况(交互模式)
    字符串的长度为0或1时
    符合标识符的字符串
    字符串只在编译时进行驻留,而非运营时
    [-5,256]之间的整数数字
    sys中的intern方法强制两个字符串指向同一个对象
    PyCharm对字符串进行了优化处理'''

''' 字符串的查询操作的方法
    index() 查找子串substr第一次出现的位置,如果查找的子串不存在,则抛出ValueError
    rindex()    查找子串substr最后一次出现的位置,如果查找子串的位置不存在时,则抛出ValueError
    find()  查找子串substr第一次出现的位置,如果查找的子串不存在,则返回-1
    rfind() 查找子串substr最后一次出现的位置,如果查找的子串不存在,则返回-1'''

#字符串的查询操作
a='孙梦晴很漂亮'
print(len(a))
print(a.startswith('孙'))
print(a.startswith('孙梦晴'))
print(a.endswith('漂亮'))
print(a.index('梦'))
print(a.rindex('梦'))
print(a.find('孙'))
print(a.rfind('孙'))
print(a.count('梦'))
#print(a.index('美'))    ValueError: substring not found

#判断字符串的方法
a='孙梦晴很漂亮'
print(a.isalnum()) #判断指定字符串是否全都由字母和数字组成
b=a.isalpha()   #判断指定字符串是否全都由字母组成
c=a.isdigit()
d=a.isspace()   #判断指定字符串是否全部由空白字符组成(回车,换行,水平制表符)
e=a.isupper()
f=a.islower()
g=a.isidentifier() #判断指定字符串是不是合法的标识符
h=a.isdecimal() #判断指定字符串是否全部由十进制的数字组成
i=a.isnumeric() #判断指定字符串是否全部由数字组成
print(b,c,d,e,f,g,h,i)

#祛除首尾空格信息
a=' 孙梦晴和晴梦孙 '
b=a.strip()
print(b)
c=a.strip('孙')
print(c)
d=a.lstrip('孙')
e=a.rstrip('孙')
print(d,e)

'''大小写转化
    upper() 把字符串中所有字符都转成大写字母
    lower() 把字符串中所有字符都转成小写字母
    swapcase()  把字符串中所有大写字母转成小写,把所有小写字母转成大写
    capitalize()    把第一个字符转成大写,把其余字符转成小写
    title() 把每个单词的第一个字符转成大写,把每个单词的其余字符转成小写'''

a='sun meng qing hen piao liang'
b=a.split()
c=a.capitalize()
d=a.title()
e=a.upper()         #转成大写之后,会产生一个新的字符串对象
f=a.lower()
g=a.swapcase()
print(b)
print(c)
print(d)
print(e)
print(f)
print(g)

'''字符串内容对齐操作
    center()    居中对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度
    则返回原字符串
    ljust()     左对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度
    rjust()     右对齐,第1个参数指定宽度,第2个参数指定填充符,第2个参数是可选的,默认是空格,如果设置宽度小于实际宽度
    zfill()     右对齐,左边用0填充,该方法只接受一个参数,用于指定字符串的宽度,如果指定的宽度小于等于字符串的长度,
    返回字符串本身'''

a='hello,python'
#居中对齐
print(a.center(20,'*'))
#左对齐
print(a.ljust(20))
print(a.ljust(10))
print(a.ljust(20,'*'))
#右对齐
print(a.rjust(20,'*'))
print(a.rjust(20))
print(a.rjust(10))
#格式排版
a='孙梦晴'
b=a.center(9,'*')
print(b)
c=a.ljust(9,'*')
d=a.rjust(9,'*')
print(c)
print(d)

'''字符串劈分操作的方法
    split() 
    从字符串的左边开始劈分,默认的劈分字符都是空格字符串,返回的值都是一个列表
    以通过参数sep指定劈分字符串的劈分符
    通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分后,剩余的子串会单独作为一部分
    rsplit()
    从字符串的右边开始劈分,默认的劈分字符都是空格字符串,返回的值都是一个列表
    以通过参数sep指定劈分字符串的劈分符
    通过参数maxsplit指定劈分字符串时的最大劈分次数,在经过最大次劈分后,剩余的子串会单独作为一部分'''

s='hello world'
lst=s.split()
print(lst)
s1='hello|world|python'
print(s1.split(sep='|'))
print(s1.split(sep='|',maxsplit=1))
print(s1.rsplit())
print(s1.rsplit(sep='|'))
print(s1.rsplit(sep='|',maxsplit=1))

#字符串替换  replace()   第1个参数指定被替换的子串,第二个参数指定替换子串的字符串,该方法返回替换后得到的字符串
#替换前的字符串不发生变化,调用该方法时可以通过第3个参数指定最大替换次数
s='hello,python'
print(s.replace('python','java'))
s1='hello,python,python'
print(s1.replace('python','java',2))
#字符串替换  join()  将列表或元组中字符串合并成一个字符串
lst=['hello','java','python']
print('|'.join(lst))
print(''.join(lst))

'''字符串的比较操作
    运算符:>,>=,<,<=,==,!=
    比较规则:首次比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,
    其比较结果就是两个字符串的比较结果,两个字符串后面的字符将不再被比较
    比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的ordinal value
    与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal value可以得到其对应的字符'''

print('apple'>'app')
print('apple'>'banana')
print(ord('a'),ord('b'))
print(chr(97),chr(98))
'''==与is 的区别
    == 比较的是value
    is 比较的是 id是否相等'''

a=b='python'
c='python'
print(a == b)
print(a == c)
print(a is b)
print(a is c)
print(id(a))
print(id(b))
print(id(c))

'''字符串的切片操作
    字符串是不可变类型
    不具备增删改等操作
    切片操作将产生新的对象'''

s='hello,python'
s1=s[:5]    #由于没有指定起始位置,所以从零开始切
s2=s[6:]    #由于没有指定结束位置,所以切到字符串的最后一个位置
s3='!'
snewstr=s1+s2+s3
print(s1)
print(s2)
print(snewstr)

print('----切片操作[start,stop,step----')
print(a[1:5:1])     #从1开始截到5(不包含5),步长为1
print(a[::2])    #默认从0开始,没有写结束,默认到字符串的最后一个元素,步长为2,两个元素之间的索引间隔为2
print(a[::-1])      #默认从字符串的最后一个元素开始,到字符串的第一个元素结束,因为步长为负数
print(a[6::-1])     #从索引6的元素开始,到字符串的最后一个元素,步长为1

'''格式化字符串
    %做占位符
        %s-->字符串
        %i或%d-->整数
        %f-->浮点数
    {}做占位符'''
#   %占位符
name='张三'
age=20
print('我叫%s,今年%d岁了' % (name,age))
#   {}占位符
print('我叫{0},今年{1}岁了'.format(name,age))
#f-string
print(f'我叫{name},今年{age}岁了')

print('%10d' % 99)  #10表示的是宽度
print('%.3f'  % 3.1415926)  #.3表示的是小数点后三位
#同时表示宽度和精度
print('%10.3f'   %   3.1415926)

print('{0:.3}'.format(3.1415926))   #.3表示的是一共三位小数
print('{:.3f}'.format(3.1415926))  #3.3f表示的是三位小数
print('{:10.3f}'.format(3.1415926)) #同时设置精度和宽度

'''字符串的编码转换
        A计算机    str在内存中以Unicode表示-->编码-->byte字节传输-->解码-->B计算机   显示
    编码与解码的方式
        编码:将字符串转换成二进制数据(bytes)
        解码:将bytes类型的数据转换成字符串类型'''

s='天涯共此时'
#编码
print(s.encode(encoding='GBK')) #在GBK这种编辑格式中,一个中文占两个字节
print(s.encode(encoding='UTF-8'))   #在UTF-8这种编辑格式中,一个中文占三个字节

#解码
#byte代表就是一个二进制数据(字节类型的数据)
byte=s.encode(encoding='GBK')   #编码
print(byte.decode(encoding='GBK'))

byte=s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))
#编码和解码的格式要相同
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值