我是靠谱客的博主 现实烧鹅,最近开发中收集的这篇文章主要介绍Python基础知识学习记录 2021——0910(字符串(下)),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

文章目录

    • 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

练习:
【操作】

  1. 将”to be or not to be”字符串倒序输出
  2. 将””字符串中所有的 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型)

  1. isalnum() 是否为字母或数字
  2. isalpha() 检测字符串是否只由字母组成(含汉字)。
  3. isdigit() 检测字符串是否只由数字组成。
  4. isspace() 检测是否为空白符
  5. isupper() 是否为大写字母
  6. 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(字符串(下))所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部