当前位置:网站首页>(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'))
边栏推荐
猜你喜欢
Stable and easy-to-use short connection generation platform, supporting API batch generation
uniapp | 使用npm update更新后编译报错问题
5.20今日学习
6.27面试集
TypeScript error error TS2469, error TS2731 solution
微信小程序自定义swiper轮播图面板指示点|小圆点|进度条
PHP8.2的版本发布管理员和发布计划
SQL classification, DQL (Data Query Language), and corresponding SQL query statement demonstration
你的本地创建的项目库还在手动创建远端代码仓库再推送吗,该用它了
New usage of string variable parsing in PHP8.2
随机推荐
阿里云设置域名解析重定向后,无法使用Chrome访问
(7) 浅学 “爬虫” 过程 (概念+练习)
Multithreading (implementing multithreading, thread synchronization, producer and consumer)
4.14到新公司的一天
TypeScript error error TS2469, error TS2731 solution
1.uview form校验位置可以改变 2.时间区间
Baidu positioning js API
js预编译 GO 和AO
[league/climate]一个功能健全的命令行功能操作库
[symfony/finder]最好用的文件操作库
阿里云MySQL5.7安装以及部分主要问题(总和)
easyswoole uses redis to perform geoRadiusByMember Count invalid fix
阿里云服务器如何使用admin账户登录
What are the PHP framework?
[vite] Failed to parse source for import analysis because the content contains invalid JS syntax.
[phpunit/php-timer]一个用于代码执行时间的计时器
js 原型和原型链
PHP Foundation March Press Announcement Released
百度定位js API
解决uni-app 打包H5网站 下载图片问题