字符串

创建及驻留机制

a = 'Python'
b = "Python"
c = '''Python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
//id得到的地址都是一样的,说明三个“Python”指向的都是同一个内存块。

字符串查询

一般用find因为不报异常

  • index()查找子串substr第一次出现的位置,如果查找的子串不存在时,则抛出ValueError
  • rindex()查找子串substr最后一次出现的位置,如果查找的子串不存在时,则抛出ValueError—式
  • find()查找子串substr第一次出现的位置,如果查找的子串不存在时,则返回-1
  • rfind()查找子串substr最后一次出现的位置,如果查找的子串不存在时,则返回-1
s='hello,hello'
print(s.index('lo')) //3
print(s.find('lo')) //3
print(s.rindex('lo')) //9
print(s.rfind('lo')) //9

大小写转换

会产生一个新的字符串对象

s.upper()
s.lower()
s.swapcase()
s.capitalize()
s.title

对齐操作

第二个参数为填充符号,可以不写

s = 'hello,Python'

print(s.center(20,*))
****hello,Python****

print(s.ljust(20,*))
hello,Python********

print(s.rjust(20,*))
********hello,Python

//右对齐,只有一个参数,用0填充
print(s.zfill(20))
00000000hello,Python

字符串劈分操作

split()从左分
s = 'hello Python'
list1 = s.split()
['hello','Python']

s = 'hello|Python'
list2 = s.split(sep = '|') //选定分隔符
rsplit()从右分
s = 'hello Python'
list1 = s.rsplit()
['hello','Python']

常用判断

isidentifier()
isspace()
isalpha()
isdecimal()
isnumeric()
isalpnum()
s = 'hello Python'
print('1.',s.isidentifier()) #False
print('2.','socool'.isidentifier()) #True
print('3.','so_cool'.isidentifier()) #True

字符串替换

s='hello,Python'
print(s.replace('Python','Java')) //hello,Java

s='hello,Python,Python,Python'
print(s.replace('Python','Java',2)) //hello,Java,Java,Python

字符串合并

list1 = ['hello','java','Python']
print('|'.join(list1)) //hello|Java|Python

字符串比较

比较原始值

apple > app
apple > banana   //97>98,自然是错的
print(ord('a') ,ord('b')) //97,98

字符串切片

字符串是不可变类型

不具备增删改曹操做、切片后产生新的对象。

s = 'hello,Python'
s1 = s[:5] //hello
s2 = s[6:] //Python
s3 = !
newstr = s1 + s2 + s3 //hello!Python

字符串格式化

为什么要格式化:

兹证明xxx,身份证号:xXx,现居家庭住址: xxx,为我公司在职员工,联系电话: xXx,因工作需要,每天需出入该小区,本单元每天早晚有定时消毒、测量体温、出入登记等防控疫情措施。

%作占位符
  • %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('{0 :.3}'.format (3.1415926))#.3表示的是一共是3位数 --3.14
print('{0:.3f}'.format(3.1415926))#.3f表示三位小数 --3.142

字符串的编码转换

为什么需要字符串的编码转换?

str在内存中以Unicode表示,但是传输的时候转化为byte字节传输,然后又在另一个电脑上以Unicode表示str,这个过程就需要编码、解码。

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='UTF-8’))#解码

posted @ 2022-08-05 09:29  Dinesaw  阅读(28)  评论(0编辑  收藏  举报