第九讲:python字符串的创建与驻留机制&常用操作&比较操作&切片操作&格式化字符串&编码与解码


1、字符串的创建与驻留机制

#字符串的驻留机制
a='XCsss'
b="XCsss"
c='''XCsss'''
print(a,id(a)) #XCsss 2756894501744
print(b,id(b))  #XCsss 2756894501744
print(c,id(c)) #XCsss 2756894501744

‘’‘
驻留机制的几种情况(交互模式,即实时)
    字符串的长度为01时
    符合标识符的字符串:字母、数字、下划线
    字符串只在编译时进行驻留,而非运行时
    [-5,256]之间的整数数字
sys中的internet方法强制2个字符串指向同一对象
Pycharm对字符串驻留优化了,本来不驻留的也能驻留
’‘’

2、字符串的常用操作

2.1 查询操作


s='XCsss,98,XCsss'
#查找方法
#index(),查找子串substr第一次出现的位置,子串不存在则抛出异常
print(s.index('ss')) #2
#rindex(),查找子串substr最后一次出现的位置,子串不存在则抛出异常
print(s.rindex('ss')) #12
#find(),查找子串substr第一次出现的位置,子串不存在则返回-1
print(s.find('FD'))  #-2
#rfind(),查找子串substr最后一次出现的位置,子串不存在则返回-1
print(s.rfind('ss')) #12

2.2 大小写转化

s='XCsss,98,xCsss'
#大小写转化
#uper(),所有字符转为大写
print(s.upper()) #XCSSS,98,XCSSS

#lower(),所有字符转为小写
print(s.lower())# xcsss,98,xcsss

#swapcase 大写转小写,小写转大写
print(s.swapcase()) #xcSSS,98,XcSSS

#capitalize 第一个字符大写,其他小写
print(s.capitalize()) #Xcsss,98,xcsss
 
#title 每个单词的第一个字符转为大写,其他小写
print(s.title())  #Xcsss,98,Xcsss

2.3 内容对齐


s='XCsss,98,xCsss'

#内容对齐
'''
center() 居中对齐,1参数指定宽度,2参数指定填充符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
ljust()左对齐,1参数指定宽度,2参数指定填充符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
rjust()右对齐:1参数指定宽度,2参数指定填充符,第二个参数可选,默认是空格,如果设置宽度小于实际宽度则返回原字符串
zfill()右对齐,左边用0填充,该方法只有1个参数,用于指定字符串的宽度,如果指定宽度小于等于字符串的长度,则返回字符串本身
'''
print(s.center(30,'*')) #********XCsss,98,xCsss********
print(s.ljust(30,'*')) #XCsss,98,xCsss****************
print(s.rjust(30,'*')) #****************XCsss,98,xCsss
print(s.zfill(30)) #0000000000000000XCsss,98,xCsss
print('-100'.zfill(30))# -00000000000000000000000000100

2.4 劈分操作


s='XCsss,98,xCsss'

#劈分操作

#左侧劈
lst=s.split()
print(lst) #['XCsss,98,xCsss']
s1='XCsss|98|xCsss'
print(s1.split(sep='|')) #['XCsss', '98', 'xCsss']
print(s1.split(sep='|',maxsplit=1)) #['XCsss', '98|xCsss']

#右侧劈
print(s.rsplit()) #['XCsss,98,xCsss']
print(s1.rsplit(sep='|',maxsplit=1)) #['XCsss|98', 'xCsss']

2.5 判断的相关方法


s='XCsss,98,xCsss'
#判断的相关方法
'''
    isidentifier() 是否合法标识符:字母、数字、下划线
    isspace()是否全部由空白字符组成:回车、换行、水平制表符
    isalpha() 是否全部由字母组成
    isdecimal() 是否全部由十进制的数字组成
    isnumeric() 是否全部由数字组成
    isalnum() 是否全部字母和数字组成
'''
print(s.isidentifier()) #False
print(s.isspace())#False
print(s.isalpha())#False
print(s.isdecimal())#False
print(s.isnumeric())#False
print(s.isalnum())#False

2.6 替换与合并

s='XCsss,98,xCsss'
#替换
print(s.replace('98','10')) #XCsss,10,xCsss
s1='XCsss,XCsss,XCsss,90'
print(s1.replace('XCsss','change',2)) #change,change,XCsss,90

#合并
lst=['hello','hi']
print('|'.join(lst)) #hello|hi
print(''.join(lst))  #hellohi

t=('hello','hi')
print('|'.join(t)) #hello|hi

print('|'.join('hello'))

3、比较操作


#字符串的比较
print('apple'>'app') #True
print('apple'>'school') #False
print(ord('a'),ord('s')) #97,115  ord 获取字符的原始值

print(chr(97),chr(115)) # a s

'''
    ==与is的区别
        == 比较的是value
        is 比较的是id
'''
a=b='ccc'
c='c'
print(a is b) #True
print(a == b) #True
print(a == c) #False
print(a is c)  #False

4、切片操作

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

s='hell0,python'
s1=s[:5]
s2=s[6:]
s3='!'
new=s1+s3+s2
print(s1) #hello
print(s2) #python
print(new) #hell0!python

print(id(s),id(s1),id(s2),id(s3),id(new))
#2374844001200 2374844001520 2374844001584 2374843999472 2374844001648

print(s[1:5:1]) #ell0  ,从1开始截到5(不包含5),步长为1
print(s[::2]) #hl0pto
print(s[::-1]) #nohtyp,0lleh
print(s[-6::1]) #python

5、格式化字符串

#格式化字符串
# %占位符,整数。 {}占位符,浮点数

name='张三'
age=20
print('我叫%s,今年%d岁' %(name,age)) #我叫张三,今年20岁

print('我叫{0},今年{1}岁'.format(name,age)) #我叫张三,今年20岁

#f-string
print(f'我叫{name},今年{age}岁') #我叫张三,今年20岁

#
print('%10d' % 99) #10的宽度
print('%.3f' % 3.1415) #3.142 精度
print('%10.3f' % 3.14159)

#
print('{0}'.format(3.1415926)) #3.1415926
print('{0:.3}'.format(3.1415926)) #3.14
print('{0:.3f}'.format(3.1415926)) #3.142
print('{:10.3f}'.format(3.1415926)) #同时设置宽度和精度

6、字符串的编码与解码

#字符串的编码转换
#编码
s='天涯共此时'
print(s.encode(encoding='GBK')) #GBK中,一个中文占2个字节 #b'\xcc\xec\xd1\xc4\xb9\xb2\xb4\xcb\xca\xb1'
print(s.encode(encoding='UTF-8')) #UTF-8中,一个中文占3个字节 #b'\xe5\xa4\xa9\xe6\xb6\xaf\xe5\x85\xb1\xe6\xad\xa4\xe6\x97\xb6'

#解码
byte=s.encode(encoding='GBK') #byte 是一个二进制数据
print(byte.decode(encoding='GBK')) #天涯共此时

#编码和解码的格式要相同

猜你喜欢

转载自blog.csdn.net/buxiangquaa/article/details/114004129