python基础(9):字符串(附有代码)

✅作者简介:大家好我是Xlong,一枚正在学习COMSOL、Python的工科研究僧
📃个人主页: Xlong的个人博客主页
🔥系列专栏:Python学习
💖如果觉得博主的文章还不错的话,请👍支持一下博主哦🤞

本篇简介

         在上一章《python基础(8):元组和集合(附有代码)》中我们详细介绍了元组、集合等多项概念。这一篇文章我们主要来学习python中的字符串

目录

本篇简介

一、字符串的驻留机制

二、字符串的常用操作

2.1 字符串的查询操作方法

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

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

2.4 字符串劈分操作的方法

 2.5 判断字符串操作的方法

2.6 字符串操作的其他方法

 三、字符串的比较

四、字符串的切片操作

五、格式化字符串

 六、字符串的编码转换


一、字符串的驻留机制

1.字符串:在python中字符串是基本数据类型,是一个不可变的字符序列。

2.字符串驻留机制

(1)仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python的驻留机制对相同的字符串只保留一份拷贝,后续创建相同字符串时,不会开辟新空间,而是把该字符串的地址赋给新创建的变量

#字符串的驻留机制
a = 'python'
b = "python"
c = '''python'''
print(a,id(a))  #输出结果:python 2713985600368
print(b,id(b))  #输出结果:python 2713985600368
print(c,id(c))  #输出结果:python 2713985600368

(2)驻留机制的几种情况(交互模式)

  • 字符串的长度为0或1时

  • 符合标识符的字符串

  • 字符串只在编译时进行驻留,而非运行时

  • [-5,256]之间的整数数字

(3)驻留机制的优缺点

  • 当需要值相同的字符串时,可以直接从字符串池里拿来使用,避免频繁的创建和销毁,提升效率和节约内存,因此拼接字符串和修改字符串是会比较影响性能的

  • 在需要进行字符串拼接时建议使用str类型的join方法,而非+,因为join()方法是先计算出所有字符中的长度,然后再拷贝,只new一次对象,效率要比“+”效率高

二、字符串的常用操作

2.1 字符串的查询操作方法

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

s = 'hello,python'
a = s.upper() #转成大写之后,会产生一个新的字符串对象
print(a,id(a))      #运算结果:HELLO,PYTHON 2252801261296
print(s,id(s))      #运算结果:hello,python 2252801362800
b = s.lower()  #转换之后,会产生一个新的字符串对象
print(s.lower(),id(s.lower()))      #运算结果:hello,python 2252803178608
print(s,id(s))      #运算结果:hello,python 2252801362800
print(b==s)         #运算结果:True
print(b is s) #False运算结果:False

s2 = 'hello,Python'
print(s2.swapcase()) #运算结果:HELLO,pYTHON
print(s2.title())    #运算结果:Hello,Python

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

2.4 字符串劈分操作的方法

 2.5 判断字符串操作的方法

        待补充

2.6 字符串操作的其他方法

 三、字符串的比较

        待补充

四、字符串的切片操作

        待补充

五、格式化字符串

1.格式化字符串的两种方式

(1)%作占位符

(2){ }作占位符

#格式化字符串
#(1)%占位符
name = '张三'
age = 20
print('我叫%s,今年%d岁'%(name,age))        #运行结果:我叫张三,今年20岁
#(2){ }占位符
print('我叫{0},今年{1}岁'.format(name,age))	#运行结果:我叫张三,今年20岁
#(3)f-string
print(f'我叫{name},今年{age}岁')			#运行结果:我叫张三,今年20岁
print('%10d' %99)  #10表示宽度                    #运行结果:        99
print('%.3f' % 3.1415926) #.3表示小数点后三位      #运行结果:3.142
#同时表示宽度和精度
print('%10.3f' %3.1415926) #一共总宽度为10,小数点后3位      #运行结果:     3.142
print('hellohello')										#运行结果:hellohello
print('{0:.3}'.format(3.1415926)) #.3表示的是一共三位有效数字运行结果:3.14
print('{:.3f}'.format(3.1415926)) #.3f表示的是3位小数运行结果:3.142
print('{:10.3f}'.format(3.1415926)) #同时设置宽度和精度,一共是10位,3位是小数

 六、字符串的编码转换

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

        最早的字符串编码是ASCII码,只包括0~9的数字,A~Z和a~z的字母以及空格、制表符等其他符号共计256个字符。随着信息技术的发展,各国文字都需要进行编码,因此就出现了GBK/GB2312 编码以及UTF-8 编码

         在Python3中,默认采用 UTF-8 编码;而在Python中,有两种常见的字符串类型,一种是str,一种是bytes,这两种类型的字符串不能拼在一起使用,如果我们需要在网络上传输或保存到磁盘上时,就应该进行编码转换操作,即将str转为二进制数据(bytes)。要实现此功能,需要使用encode()方法

        更多信息请移步《Python字符串编码转换》

2.编码与解码的方式

(1)编码:将字符串转换为二进制数据(bytes)

(2)解码:将bytes类型的数据转换成字符串类型

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='GBK')) #解码

byte = s.encode(encoding='UTF-8')
print(byte.decode(encoding='UTF-8'))

未完待续......

原创不易,各位看官请随手点一下Follow和Star,感谢!!!

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xlong~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值