字符串
字符串基本特点
字符串的本质是一个字符序列。Python的字符串是不可变的,无法对原字符串做任何修改。可将字符串的一部分复制到新创建的字符串,达到看起来修改的效果
Python不支持单字符类型,单字符也是作为一个字符串使用的。
字符串的编码
直接支持Unicode,可表示世界上任何书面语言。16位表示一个字符,ASCII码是Unicode的子集
使用内置函数ord()可以把字符转换成对应的Unicode码
使用内置函数chr()可以把十进制数字转换成对应字符串
引号创建字符串
通过单引号或双引号创建字符串
a = "I'm a teacher" print(a)
b = 'My name is "TOM"' print(b)
连续三个单引号或三个双引号,可以创建多行字符串。
resume = ''' name="gaoqi" company = "six" age= 18 lover = "TOM"''' print(resume)
空字符串和len()函数
Python允许空字符串的存在,不包含任何字符且长度为0
len()用于计算字符串中包含多少字符
转义字符
转义字符 | 描述 |
\(在行尾时) | 续行符 |
\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\b | 退格 |
\n | 换行 |
\t | 横向制表符 |
\r | 回车 |
字符串拼接
1.可以使用+将多个字符串拼接起来。 'aa'+'bb'==>'aabb'
① 如果+两边都是字符串,则拼接
②如果+两边都是数字,则加法运算
③如果+两边类型不同,则抛出异常
2.可以将多个字符串直接放到一起实现拼接。例如: 'aa' 'bb'==>'aabb'
字符串复制
使用*可是实现字符串的复制
【操作】字符串的复制操作
>>> a = 'Sxt'*3 >>> a 'SxtSxtSxt'
不换行打印
print()会自动打印一个换行符。若不想换行,可以自己通过修改end='任意字符串'。实现末尾添加任何内容
print("dhg",end='') print("dhg",end='##') print("dhg")
输出:
dhgdhg##dhg >>>
从控制台读取字符
使用input()从控制台读取键盘输入的内容
myname = input("请输入姓名:")
str()实现数字转型字符串
str()可以实现其它数据类型转换为字符串
str(5.20)==>'5.20' str(3.14e2) ==> '314' str(True)= 'True'
使用[ ]提取字符
在字符串后面加[],在[]里面指定偏移量,可以提取该位置的单个字符
正向搜索:
最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。直到len(str) -1
反向搜索
最右侧第一个字符,偏移量是-1,倒数第二个是-2,以此类推,直到-len(str)
>>> a='qwertyuiopasdfghjklzxcvbnm' >>> a 'qwertyuiopasdfghjklzxcvbnm' >>> a[0] 'q' >>> a[3] 'r' >>> a[26-1] 'm' >>> a[-1] 'm' >>> a[-26] 'q'
replace()实现字符串替换
字符串是不可改变的,可以通过创建新的字符串来实现
>>> a='qwertyuiopasdfghjklzxcvbnm' >>> a.replace('c','高') 'qwertyuiopasdfghjklzx高vbnm'
字符串切片slice操作
切片slice操作可以快速提取子串
[start : end :step] (包头不包尾)
[:] 提取整个字符串
[start:] 从start开始到结束
[:end] 从0开始到end-1
[start:end] 从start 到end-1
split()分割和join()合并
split()可以基于指定分隔符将字符串分割成多个子字符串。若不指定分隔符,则默认使用空白字符(换行、空格、制表)
>>> a = "to be or not to be" >>> a.split() ['to', 'be', 'or', 'not', 'to', 'be']
join()的作用和split()作用刚相反,用于将一系列子字符串连接起来
>>> a = ['six','six100','six200'] >>> "*".join(a) 'six*six100*six200'
字符串拼接要点:
使用字符串拼接+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用join()函数,因为join()函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象
字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变的字符串的方法,不同的值被存放在字符串驻留池中。Python支持字符串驻留机制,对于符合标识符规则的字符串(下划线 字母 数字),会启用字符串驻留机制
>>> a = "abd_33" >>> b = "abd_33" >>> a is b True >>> c = "dd#" >>> d = "dd#" >>> c is d False
成员操作符
in/not in 关键字,判断某个字符(子字符串)是否存在于字符串中
字符串常用方法汇总
常用查找方法
方法 | 说明 |
len(a) | 字符串长度 |
a.startswith("子字符串") | 是否以某字符串开头 |
a.endswith("子字符串") | 是否以某字符串结尾 |
a.find("子字符串") | 第一次出现指定字符串的位置 |
a.rfind("子字符串") | 最后一次出现指定字符串的为位置 |
a.count("子字符串") | 指定字符串出现了几次 |
a.isalnuma() | 是否所有字符全是字母或数字 |
去除首尾信息
可通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左侧指定信息,rstrip()去除字符串右侧指定信息
大小写转换
示例 | 说明 |
a.capitalzie() | 产生新的字符串,首字母大写 |
a.title() | 产生新的字符串,每个单词首字母都大写 |
a.upper() | 产生新的字符串,所有字母都转换成大写 |
a.lower() | 产生新的字符串,所有字母都转换成小写 |
a.swapcase() | 产生新的字符串,所有字母大小写交换 |
格式排版
center()、ljust()、rjust()这三个函数用于对字符串实现排版
>>> a = "SXT" >>> a.center(10,"*") '***SXT****' >>> a.center(10) ' SXT ' >>> a.ljust(10,"*") 'SXT*******' >>> a.rjust(10,"*") '*******SXT'
其它方法
- isalnum() 是否为字母或数字
- isalpha() 检测字符串是否只由字母组成(含汉字)
- isdigit() 检测字符串是否只由数字组成
- isspace() 检测是否为空白符
- isupper() 是否为大写字母
- islower() 是否为小写字母
字符串格式化
format()基本使用方法
str.format(),增强了字符串格式化的功能,通过{}和:来替代以前的%
format函数可以接受不限个参数,位置可以不按顺序
>>> a = "姓名是:{0},年龄是:{1}" >>> a.format("张三",19) '姓名是:张三,年龄是:19' >>> a.format("高希希",6) '姓名是:高希希,年龄是:6' >>> b = "姓名是:{0},年龄是:{1},:{0}是个好小伙" >>> b.format("张三",22) '姓名是:张三,年龄是:22,:张三是个好小伙' >>> c = "名字是{name},年龄是{age}" >>> c.format(age=22,name="张三") '名字是张三,年龄是22'
通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。
填充与对齐
填充常和对齐一起使用
^ < > 分别是居中、左对齐、右对齐,后面带宽度
:后面带填充的字符,只能是一个字符,不指定的话默认用空格填充
>>> "{:*>8}".format(234) '*****234' >>> "我是{0},我喜欢数字{1:*>8}".format("张三",666) '我是张三,我喜欢数字*****666'
数字格式化
a = "我是{0},我的存款有{1:.2f}" >>> a.format("张三",38888.234342) '我是张三,我的存款有38888.23'
可变字符串
Python中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,只能创建新的字符串对象。但是,经常我们需要原地修改字符串,可以使用io.StringIO对象或array模块
>>> import io >>> s = "hello,sxt" >>> sio = io.StringIO(s) >>> sio <_io.StringIO object at 0x000001BEAAE53F70> >>> sio.getvalue() 'hello,sxt' >>> sio.seek(7) 7 >>> sio.write("g") 1 >>> sio.getvalue() 'hello,sgt'
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步