当前位置:首页>笔记分享>Python笔记>Python基础>Python字符串

Python字符串

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

字符串:在Python中字符串是基本数据类型,是一个不可变的字符序列
字符串的创建: a = “Python”单引号双引号三引号都可以

什么叫字符串驻留机制呢?
仅保存一份相同切不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留池机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量
驻留机制的几种情况(交互模式下cmd)

  • 字符串的长度为0或1
  • 符合标识符的字符串
  • 字符串只在编译时进行驻留,而非运行时
  • [-5,256]之间的整数数字
    注意:
  • sys中的intern方法可以强制两个字符串指向同一个对象(内存地址)
  • PyCharm对字符串进行了优化处理(相同的元素指向相同的内存地址)
    字符串驻留机制的优缺点
  • 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的。
  • 在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符串的长度,然后再拷贝,只new一次对象,效率要比“+”高

2、字符串的常见操作

字符串的查询操作方法

功能 方法名称 作用
查询方法 index() 查找字串substr第一次出现的位置,如果查找的子串不存在,则抛出ValueError异常
查询方法 rindex() 查找字串substr最后一次出现的位置,如果查找的子串不存在,则抛出ValueError异常
查询方法 find() 查找字串substr第一次出现的位置,如果查找的子串不存在,则返回-1
查询方法 rfind() 查找字串substr最后一次出现的位置,如果查找的子串不存在,则返回-1
#使用方法例子
s = ‘hello,hello’
print(s.index(‘lo’))
print(s.find(‘lo’))
print(s.rindex(‘lo’))
print(s.refind(‘lo’))

字符串的大小写转换操作方法

方法名称 作用
upper() 把字符串所有字符都转换成大写字母
lower() 把字符串所有字符都转换成小写字母
swapcase() 字符串中大写转小写,小写转大写
capitalize() 把字符串第一个字符转换成大写,其余转换为小写
title() 单词首字母大写,剩余小写

注:转换后产生新的字符串

# 示例
s = ‘Hello,python’
a = s.upper()
b = s.lower()

字符串内容对齐操作的方法

方法名称 作用
center() 居中对齐,第1个参数指定宽度,第二个参数指定填充符,第2个参数是可选的,默认空格,如果设置宽度小于实际字符串宽度,则返回原字符串
ljust() 左对齐,第1个参数指定宽度,第二个参数指定填充符,第2个参数是可选的,默认空格,如果设置宽度小于实际字符串宽度,则返回原字符串
rjust() 右对齐,第1个参数指定宽度,第二个参数指定填充符,第2个参数是可选的,默认空格,如果设置宽度小于实际字符串宽度,则返回原字符串
zfill 右对齐,左边用0填充,该方法只接收一个参数,如果设置宽度小于实际字符串宽度,则返回原字符串
# 示例
s = ‘hello,world’
print(s.center(20,’*’)) # *号填充
print(s.center(20)) #默认空格填充
print(s.center(10)) #小于字符串长度返回原字符串
print(s.zfill(20)) #只能指定宽度

字符串劈分操作的方法

方法名称:split()
作用:

  • 1.从字符串左侧开始劈分,默认劈分字符是空格字符串,返回的值都是列表字符串名.split()
  • 2.可以通过参数sep指定劈分字符串的劈分符字符串名.split(sep=‘|’)
  • 3.可以通过参数maxsplit设置劈分的最大次数,在经过最大次数劈分后其余的会单独作为一部分字符串名.split(sep=‘|’,maxsplit=1)

方法名称:rsplit()
作用:

  • 1.从字符串左侧开始劈分,默认劈分字符是空格字符串,返回的值都是列表字符串名.rsplit()
  • 2.可以通过参数sep指定劈分字符串的劈分符字符串名.rsplit(sep=‘|’)
  • 3.可以通过参数maxsplit设置劈分的最大次数,在经过最大次数劈分后其余的会单独作为一部分字符串名.rsplit(sep=‘|’,maxsplit=1)

判断字符串操作的方法

方法名称 作用
isidentifier() 判断指定的字符串是不是合法的标识符
isspace() 判断指定的字符串是否全部由空白字符串组成(回车、换行、水平制表符)
isalpha() 判断指定的字符串是否由字母组成
isdecimal() 判断指定的字符串是否全由十进制数字组成
isnumeric() 判断指定的字符串是否全部数字组成
isalnum() 判断指定的字符串是否全部由字母和数字组成

字符串的替换与合并

功能 方法名称 作用
字符串替换 replace() 第1个参数指定被替换的子串,第2个参数指定替换子串的字符串,返回一个新的字符串,不影响原字符串,第三个参数可以指定最大的替换次数,第三个参数可以省略
字符串合并 join() 将列表或元组中的字符串合并成一个字符串

注:join用法:‘分隔符’.join(元组/列表)

# 示例1
s = ‘Hello,Python,Python,Python’
print(s.replace(‘Python’,’Java’,2))
# 结果:hello,Java,Java,Python
#示例2
lst = [‘hello’,’java’,’python’]
print(‘’.join(lst)) #用法:‘分隔符’.join(元组/列表)
print(‘*’.join(‘Python’)) #P*y*t*h*o*n
print

3、字符串的比较

  • 运算符:>,>=,<,<=,==,!=
  • 比较规则:首先比较两个字符中的第一个字符,如果相等则继续比较下一个字符,依此比较下去,直到两个字符串中的字符不想等时,其结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
  • 比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的ordinal value。与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal value可以得到其对应的字符。
print(‘apple’>’app’) #True
print(‘apple’>‘banana’) #False 97>98
#获取字符对应值
print(ord(‘a’),ord(‘b’)) #97 98
#获取数值对应的字符
print(chr(97),chr(98))

==与is的区别

  • ==比较的时value
  • is比较的是id

4、字符串的切片操作

字符串时不可变类型,不具备增删改等操作,切片操作将产生新的对象
切片new str = str[start:stop:step]
切片产生新对象

s = ‘hello,Python’
s1 = s[:5]
s2 = s[6:]
s3 = ‘!’
new str = s1+s3+s2 #hello!Python

5、格式化字符串

格式化字符串的三种方法

  • %占位符(%s:字符串,%d/%i:数字,%f:浮点数)
  • {}占位符
  • f-string
    格式化字符串
# 代码示例
name = ‘张三’
age = 20
print(‘我叫%s,今年%d岁’ % (name,age)) #方法1
print(‘我叫{0},今年{1}岁’.format(name,age)) #方法2
print(f‘我叫{name},今年{age}岁’) #方法3

精度与宽度

# 精度与宽度 符号:%
print(‘%10d’ % 99) #宽度10
print(‘%.3f’ % 3.1415926) #保留3位小数
print(‘%10.3f’ % 3.1315926) #同时宽度精度
#宽度10 保留三位小数
# 精度与宽度 符号{}
print(‘{0:.3}.format(3.1415926)’) #0是占位符 .3是总共三位数 结果3.14
# 也可以写成
print(‘{:.3f}.format(3.1415926)’) #.3f表示3位小数
print(‘{:10.3f}.format(3.1415926)’)#同时宽度与精度

6、字符串的编码转换

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

为什么需要编码转换

编码与解码方式

  • 编码:将字符串转换为二进制数据(bytes)
  • 解码:将bytes类型的数据转换成字符串类型
    编码:encode()解码:decode()
    注:编码格式与解码格式必需要相同
s = ‘我爱学习’
#编码
print(s.encode(encoding = ‘GBK’))
print(s.encode(encoding = ‘UTF-8’))
#解码
#bytes表示的是一个二进制数据(字节类型的数据)
byte = s.encode(encoding = ‘GBK’)
print(byte.decode(encoding = ‘GBK’))
#编码解码格式要一样

给TA打赏
共{{data.count}}人
人已打赏
Python基础Python笔记

Python列表、字典、元组、集合区别总结

2021-9-27 15:30:06

Python基础Python笔记

Python函数

2021-9-28 15:49:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
购物车
优惠劵
有新私信 私信列表
搜索