当前位置:网站首页>(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'))边栏推荐
- IO streams, byte stream and byte stream buffer
- 17.JS条件语句和循环,以及数据类型转换
- (1)Thinkphp6入门、安装视图、模板渲染、变量赋值
- [campo/random-user-agent]随机伪造你的User-Agent
- (6) 学生信息管理系统设计
- (2)Thinkphp6模板引擎**标签
- Multithreading (implementing multithreading, thread synchronization, producer and consumer)
- vim edit mode
- js预编译 GO 和AO
- Baidu positioning js API
猜你喜欢
随机推荐
PHP 发起支付宝支付时 订单信息乱码解决
[mikehaertl/php-shellcommand]一个用于调用外部命令操作的库
[league/climate] A robust command-line function manipulation library
16. JS events, string and operator
PHP Foundation March Press Announcement Released
---static page---
SQL classification, DQL (Data Query Language), and corresponding SQL query statement demonstration
Query the indexes of all tables in the database and parse them into sql
Phpstudy安装Thinkphp6(问题+解决)
(3)Thinkphp6数据库
npm --package.json---require
DVWA drone installation tutorial
三月底啦啦
[trendsoft/capital]金额转中文大写库
DVWA靶机安装教程
每日五道面试题总结 22/7/23
5.20今日学习
js __proto__、prototype、constructor的关系
[sebastian/diff]一个比较两段文本的历史变化扩展库
Multithreading (implementing multithreading, thread synchronization, producer and consumer)









