当前位置:网站首页>(3) 字符串
(3) 字符串
2022-08-02 03:24:00 【隐身的菜鸟】
目录
字符串是在Python中字符串是基本数据类型,是一个不可变的字符序列
字符串的驻留机制
仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻
留池中,Python的驻留机制对相同的字符串只保留一份拷贝,后续创建
相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的
变量
a='Python'
b="Python"
c='"Python'"

驻留机制适用的情况(交互模式):
1.字符串的长度为0或1时
2.符合标识符的字符串
3.字符串只在编译时进行驻留,而非运行时
4.[-5,256]之间的整数数字
注:长字符串不遵守驻留机制。非数字,字符和下划线(_)组成的字符串并不会触发驻留。驻留发生在compile_time,而不是run_time。python 中用is可以比较两个字符串是否是同一个对象,也就是内存地址是否一样。
sys中的intern方法强制2个字符串指向同一个对象 :
c = sys.intern(str(a))
字符串驻留机制的优缺点:
优点:能够提高一些字符串处理任务在时间和空间上的性能
缺点:在创建或驻留字符串时的会花费更多的时间。
•当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁
的创建和销毁,提升效率和节约内存
•在需要进行字符串拼接时建议使用 str类型的join方法,而非+,因为join()
方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效
率要比"+"效率高
字符串常用操作
字符串常用操作举例
s='hello,hell'
#举例查询方法
print(s.index('lo')) #3
#举例大小写转换
print(s.upper)
#内容对齐
print(s.center(20,'*')) #第一个参数指定宽度,第二个参数指定填充符,默认空格,设置宽度小于实际宽度返
回原字符串
#字符劈分
s1='hello|hel|world'
print(s1.split(sep='|',maxsplit=1)) #['hello','hel|world']
#从左边开始,默认劈分符是空格,返回值为列表,sep指定劈分
符,maxsplit指定最大劈分次数
#字符串判断
print(s.isdecimal()) #False
#字符串替换
print(s.replace('hello','www',1)) #www,hell
#第一个参数指定被替换的子串,第二个指定替换子串的字符串,第三个指定
最大替换次数
#字符串合并
print('',join(s)) #hellohell #将列表或元组中的字符串合并成一个字符串、
#字符串比较
a=b='python'
print(a==b) #True
#格式化字符串
name='小明'
age=20
print('我叫%s,今年%d岁' % (name,age))
print('我叫{0},今年{1}岁',format(name,age))
print(f'我叫{name},今年{age}岁')
print('%10d' % 99) #10表示宽度
print('%.3f' % 3.1415926) #.3表示小数点后三位,精度
print('%10.3f' % 3.1415926) #同时表示宽度和精度
#字符编码
字符串切片操作
字符串是不可变类型,不具备增、删、改等操作,切片操作将产生新的对象
s='hello,python'
s1=s[:5] #没有指定起始位置,所以从0开始切
s2=s[6:] #没有指定结束位置,所以切到字符串最后一个元素
print(s[1:5:1]) #ello 从1开始截到5(不包含5),步长为1
字符串编码
编码:将字符串转换为二进制数据(bytes)
解码:将bytes类型的数据转换为字符串类型
s='人生苦短'
print(s.encode(encoding='cBK'))#在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'))
边栏推荐
- Phpstudy installs Thinkphp6 (problem + solution)
- 解决 Zlibrary 卡死/找不到域名/达到限额问题,Zlibrary最新地址
- ES6数组的扩展方法map、filter、reduce、fill和数组遍历for…in for…of arr.forEach
- [mikehaertl/php-shellcommand]一个用于调用外部命令操作的库
- IO streams, byte stream and byte stream buffer
- vue3 访问数据库中的数据
- Thread Pool (Introduction and Use of Thread Pool)
- (8) requests, os, sys, re, _thread
- PHP有哪些框架?
- ---static page---
猜你喜欢
随机推荐
[symfony/mailer]一个优雅易用的发送邮件类库
[phpunit/php-timer]一个用于代码执行时间的计时器
DVWA靶机安装教程
解决uni-app 打包H5网站 下载图片问题
---static page---
PHP的几个有趣的打开方式:从基本到变态
1.11今日学习
js 之 Object.defineProperty()
项目中遇到的问题
PHP8.2 version release administrator and release plan
Thread Pool (Introduction and Use of Thread Pool)
(1)Thinkphp6入门、安装视图、模板渲染、变量赋值
每日面试题 2022/7/28
PHP有哪些杀手级超厉害框架或库或应用?
5.20今日学习
PHP image compression to specified size
3. PHP data types, constants, strings and operators
(3)Thinkphp6数据库
IP门禁:手把手教你用PHP实现一个IP防火墙
(8) requests, os, sys, re, _thread