概述
文章目录
- 027
- 字符串切片slice操作
- 28
- split() 分割
- 29
- 字符串驻留机制和字符串比较
- 30
- 常用查找方法
- strip() 去除首尾信息
- 大小写转换
- 格式排版
- 其他方法(返回值bool型)
- 31
- 字符串的格式化
- 填充和对齐
- 数字格式化
- 31
- 可变字符串
027
字符串切片slice操作
切片 slice 操作可以让我们快速的提取子字符串。标准格式为:[起始偏移量 start:终止偏移量 end:步长 step]
三个量为正数的情况
>>> a = "abcdefghijklmnopqrstuvwxyz"
>>> a[:]
'abcdefghijklmnopqrstuvwxyz'
>>> a[2:] #从2号位开始取
'cdefghijklmnopqrstuvwxyz'
>>> a[2:4] #2号位到4号位
'cd'
>>> a[1:5:2] #1号位到5号位格2取
'bd'
>>>
>>> a[-3:] #取倒数三位的字母
'xyz'
>>> a[-8:-3] #取倒数第8位到倒数第3位
'stuvw'
>>> a[::-1] #倒着一位一位取
'zyxwvutsrqponmlkjihgfedcba'
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。起始
偏移量小于 0 则会当做 0,终止偏移量大于“长度-1”会被当成-1。
>>> "abcdefg"[3:50]
'defg
练习:
【操作】
- 将”to be or not to be”字符串倒序输出
- 将””字符串中所有的 s 输
>>>
>>> "to be or not to be"[::-1]
'eb ot ton ro eb ot'
>>>
>>> "sxtsxtsxtsxtsxt"[::3]
'sssss'
28
split() 分割
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔
符,则默认使用空白字符(换行符/空格/制表符)。
>>> a = "to be or not to be"
>>> a.split() ##遇空格分割
['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be') ##遇“be”分隔
['to ', ' or not to ', '']
join()的作用将一系列子字符串连接起来。
>>> a = ['happy','happy100','happy200']
>>> '*'.join(a) #使用“*”符号链接
'happy*happy100*happy200'
拼接字符串要点:
使用字符串拼接符+,会生成新的字符串对象,因此不推荐使用+来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象
a = ""
for i in range(1000000)
a += "sxt
#该方法用时较长,应使用join方法代替
li = []
for i in range(1000000):
li.append("sxt")
a = "".join(li)
29
字符串驻留机制和字符串比较
字符串驻留:仅保存一份相同且不可变字符串的方法,不同的值被存放在字符串驻留池中。
Python 支持字符串驻留机制,对于符合标识符规则的字符(仅包含下划线(_)、字母和数字)会启用字符串驻留机制驻留机制。
>>> a = "abd_33"
>>>> b = "abd_33"
>>>> a is b # is用于比较地址
True
>>> c = "dd#"
>>>> d = "dd#"
>>>> c is d #值相同地址并不相同
False
>>> str1 = "aa" >>> str2 = "bb" >>> str1+str2 is "aabb"
False
>>> str1+str2 == "aabb" True
字符串比较和同一性
我们可以直接使用==,!=对字符串进行比较,是否含有相同的字符。我们使用 is / not is,判断两个对象是否同一个对象。比较的是对象的地址,即 id(obj1)是否和 id(obj2)相等。
30
常用查找方法
>>> a = "杭州2022年第19届亚运会火炬,名为“薪火”。设计思想源自实证中华五千年文明史的良渚文化,以其庄重大气、意蕴深远的造型,通过火炬手们的手手相传,向世界展现中国设计的独特创意、中国制造的硬核力量。"
>>> len(a)
98
>>> a.startswith("杭州2022年")
True
>>> a.find('火') # 查找第一次出现的指定该字符串位置
14
>>> a.rfind('火')# 查找最后一次出现的该字符串位置
63
>>> a.count('火') #有多少个字符串‘火’
3
>>> a.isalnum() #是否所有字符全是字母或数字
False
strip() 去除首尾信息
我们可以通过 **strip()**去除字符串首尾指定信息。通过 **lstrip()**去除字符串左边指定信息,**rstrip()**去除字符串右边指定信息
>>> "*s*x*t*".strip("*")
's*x*t'
>>> "*s*x*t*".lstrip("*")
's*x*t*'
>>> "*s*x*t*".rstrip("*")
'*s*x*t'
>>> " sxt ".strip()
'sxt'
大小写转换
编程中关于字符串大小写转换的情况,经常遇到。我们将相关方法汇总到这里。为了方便学习,先设定一个测试变量:
>>> a = 'Whatever is worth doing is worth doing well.'
>>> a.capitalize() #句子首字母大写
'Whatever is worth doing is worth doing well.'
>>> a.title() #所有单词首字母大写
'Whatever Is Worth Doing Is Worth Doing Well.'
>>> a.upper() #所有字母大写
'WHATEVER IS WORTH DOING IS WORTH DOING WELL.'
>>> a.lower() #所有字母小写
'whatever is worth doing is worth doing well.'
>>> a.swapcase() #大小写转换
'wHATEVER IS WORTH DOING IS WORTH DOING WELL.'
格式排版
center()、ljust()、rjust()这三个函数用于对字符串实现排版。示例如下:
>>> a ="HAPPY"
>>> a.center(10,'*') #字符串a放中间创建10个位置其余的用*补上
'**HAPPY***'
>>> a.center(10,) #如果没写用什么补上自动用空格补
' HAPPY '
>>> a.ljust(10,'*') #10个单位a在最左边
'HAPPY*****'
>>> a.rjust(10,'*') #10个单位a在最右边
'*****HAPPY'
其他方法(返回值bool型)
- isalnum() 是否为字母或数字
- isalpha() 检测字符串是否只由字母组成(含汉字)。
- isdigit() 检测字符串是否只由数字组成。
- isspace() 检测是否为空白符
- isupper() 是否为大写字母
- islower() 是否为小写字
31
字符串的格式化
format 函数可以接受不限个参数,位置可以不按顺序
>>> b = "{0}在2021年上半年的销量为{1}辆"
>>> b.format("特斯拉","38W")
'特斯拉在2021年上半年的销量为38W辆'
>>> a = "{age}岁的{name}打破了亚洲记录"
>>> a.format(age=32,name = '苏炳添')
'32岁的苏炳添打破了亚洲记录'
我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。
填充和对齐
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("詹姆斯邦德","7")
'我是詹姆斯邦德,我喜欢数字***7****'
>>>
数字格式化
浮点数通过 f,整数通过 d 进行需要的格式化。案例如
>>> a = "我是{0},我的存款有{1:.2f}"
>>> a.format("卡尔",3888.3231834)
'我是卡尔,我的存款有3888.32'
31
可变字符串
在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO对象或 array 模块。
>>> import io
>>> s = "hello, sxt"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x02F462B0>
>>> sio.getvalue()
'hello, sxt'
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello, gxt'
最后
以上就是现实烧鹅为你收集整理的Python基础知识学习记录 2021——0910(字符串(下))的全部内容,希望文章能够帮你解决Python基础知识学习记录 2021——0910(字符串(下))所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复