【Python字符串攻略】:玩转文字,编织程序的叙事艺术
文章目录
- 🚀一.字符串基础
- 🌈二.查看数据类型
- ⭐三.转化
- ❤️四.字符串索引
- 🚲五.字符串切片
- 🎬六.字符串切片-步长
- ☔七.反向切片注意事项
- 🚲八.字符串
- 💥查
- 💥改
- 💥删
- ❤️九.字符串拼接
- 💥拼接符: +
- 💥占位符:%s
- 💥join方法
- 💥format
- ⭐十.字符串格式化
🚀一.字符串基础
在Python中,字符串(str)可以被定义为一系列字符 (characters),这些字符可以是字母、数字或者其他任意字符。例如:
my_string = "Hello World!"
在上面的例子中,我们定义了一个名为 my_string
的字符串。它由 12 个字符组成,其中包括字母、空格和标点符号。请注意,字符串必须用双引号或单引号括起来。
字符串特征' '" """" """
均为字符串例如:name1 = '张三'
print(type(name1)) # <class 'str'>name2 = "张三"
print(type(name2)) # <class 'str'>name3 = """张三"""
print(type(name3)) # <class 'str'>""" """ # 用于字符串跨行,不必使用换行拼接
🌈二.查看数据类型
可以通过 type函数 查看指定数据类型type('张三') # <class 'str'>
⭐三.转化
在Python中,可以使用 str() 内置函数将其他类型的数据转换为字符串。这个函数接受一个参数并返回一个表示该参数值的字符串。
num = 42
result = str(num)
print(result) # '42'pi = 3.14159
result = str(pi)
print(result) # '3.14159'c = complex(2, 3)
result = str(c)
print(result) # '(2+3j)'# 想要在print出来的结果中更加直观地看到数据类型情况,可以通过type函数查看类型
❤️四.字符串索引
字符串是扁平序列,不可变序列
我们可以使用索引来访问字符串中的特定字符。在Python中,字符串的第一个字符的索引是 0,第二个字符的索引是 1,依此类推。例如:
my_string = "Hello World!"
print(my_string[0]) # H
print(my_string[6]) # W
除了正向索引之外,还可以使用负数索引访问序列中的元素。在这种情况下,从右到左计数,最后一个元素的索引为-1,以此类推。例如:
my_list = [1, 2, 3, 4, 5]
print(my_list[-1]) # 5
print(my_list[-3]) # 3
🚲五.字符串切片
在Python中,切片允许我们从序列类型数据中选择一个子集并返回一个新的序列。切片语法由两个索引值和一个可选的步长组成,如下所示:
sequence[start:stop:step] # sequence 序列
其中 start
是切片开始的索引位置(默认为0),stop
是切片结束的索引位置(不包括该位置所在的元素,默认为序列长度),step
是切片中元素之间的步长(默认为1)。
例如,假设我们有以下字符串:
my_string = "Hello World"
要获取 ‘Hel’ 以及 ‘lo W’,我们可以分别使用以下两个切片操作:
# [start:stop]# 获取 'Hel'
print(my_string[0:3])# 获取 'lo W'
print(my_string[3:7])
输出结果:
Hel
lo W
另外,如果要获取字符串的最后三个字符,可以使用负数索引和空的 start
来进行切片操作。例如:
# 获取 'rld'
print(my_string[-3:])# 切出 倒数第三个数据开始 到 最后一个数据结束
输出结果:
rld
🎬六.字符串切片-步长
在切片中,还可以使用步长来控制返回的元素之间的距离。例如,要从一个列表中获取所有的偶数位置的元素,可以使用步长为2的切片操作。示例代码如下:
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(my_list[::2])
# 切片范围(从头到尾),走两步取一个值
输出结果:
[0, 2, 4, 6, 8]
在这个例子中,我们使用一个空的 start
和 stop
来表示从头到尾,并使用步长为2来获取所有偶数位置的元素。
☔七.反向切片注意事项
my_string = "Hello World"# 获取除最后两个字符外的所有字符
# -- 起始位置 开头 可不填 也可填写0
# -- 结束位置 -2
result = my_string[:-2]
print(result) # 'Hello Wor'# 获取最后的两个数据
result = my_string[-2:]
print(result) # 'ld'
接下来的操作注意观察, 观察后理解
my_string = "Hello World"# 当步长为负数时,数据反转 这个数据序列反过来进行步长操作
result0 = my_string[::-1] # 'dlroW olleH'
result1 = my_string[::-2] # 'drWolH'# 那么 起始位置与结束位置操作也将进行反转 -- 反向索引
result2 = my_string[-1:-3:-1] # 'dl'# 起始位置 -1 结束位置 2
result3 = my_string[-1:2:-1] # 'dlroW ol'
"""
这里之所以能够成立是因为步长为负数,我们参考将从后往前
因此 切片方向将从后往前看
"""
🚲八.字符串
字符串中的元素是指字符串中的每个字符,一个字符串是由一系列字符组成的。例如,字符串 "hello, world!" 是由 13 个字符组成的,分别是 'h'、'e'、'l'、'l'、'o'、','、' '、'w'、'o'、'r'、'l'、'd' 和 '!' 。可以使用索引和切片来访问和操作这些字符。在 Python 中,字符串是不可变序列,即它们的元素不能被更改,只能通过复制或拼接等方式来创建新的字符串。
字符串无法修改原数据
💥查
- count:查找指定元素在字符串中出现的次数,可指定范围
# count:查找指定元素在字符串中出现的次数
str1 = 'addfbcvfd'
print(str1.count('d')) # 3
- index: 查找指定元素第一次出现的位置下标 - 找不到报错 【可指定范围】
# index: 查找指定元素第一次出现的位置下标 - 找不到报错
str2 = 'qwert帅哈yuil哈哈'
print(str2.index('哈')) # 6
print(str2.index('放')) # ValueError: substring not found(值错误:未找到子字符串)
- find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1) 【可指定范围】
# find: 查找指定元素第一次出现的位置下标 - 找不到返回 (-1)
str2 = 'qwert帅哈yuil哈哈'
print(str2.find('哈')) # 6
print(str2.find('放')) # -1
- isdigit: 判断字符串是否由纯数字构成
# isdigit: 判断字符串是否由纯数字构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isdigit()) # True
print(str4.isdigit()) # False
print(str5.isdigit()) # False
- isalpha: 判断字符串是否由纯字符构成
# isalpha: 判断字符串是否由纯字符构成
str3 = '12345'
str4 = '12345hasd'
str5 = 'drthasd'
print(str3.isalpha()) # False
print(str4.isalpha()) # False
print(str5.isalpha()) # True
- endswith: 判断字符串结束位置字符是否是指定字符
# endswith: 判断字符串结束位置字符是否是指定字符
str6 = 'axiba'
print(str6.endswith('ba')) # True
print(str6.endswith('aa')) # False
- startswith: 判断字符串开始位置字符是否是指定字符
# startswith: 判断字符串开始位置字符是否是指定字符
str6 = 'axiba'
print(str6.startswith('ax')) # True
print(str6.endswith('aa')) # False
- islower: 判断字符串中(英文字符)是否为纯小写
# islower: 判断字符串中(英文字符)是否为纯小写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
print(str7.islower()) # True
print(str8.islower()) # False
- isupper: 判断字符串中(英文字符)是否为纯大写
# isupper: 判断字符串中(英文字符)是否为纯大写
str7 = 'qqwee哈哈'
str8 = 'qQwee哈哈'
str9 = 'QWERT哈哈'
print(str7.isupper()) # False
print(str8.isupper()) # False
print(str9.isupper()) # True
注意字符串的不可变性质:无法改变原数据
💥改
- split: 切割字符串
# split: 切割字符串
str10 = 'hello world'
data_1 = str10.split('o')
print(data_1) # ['hell', ' w', 'rld']# 注意: 默认去去空格
str11 = 'ha sd '
data_2 = str11.split()
print(data_2) # ['ha', 'sd']
- strip:去除字符串开头与结尾的空格
# strip:去除字符串开头与结尾的空格
str12 = ' sdfg '
data_3 = str12.strip()
print(data_3) # sdfg# lstrip:去除左边空格
str13 = ' shuai'
print(len(str13)) # 原字符串长度:7
data_4 = str13.lstrip()
print(len(data_4)) # 改变后字符串长度: 5# rstrip:去除右边空格
str14 = 'shushu '
print(len(str14)) # 改变前字符串长度: 7
data_5 = str14.rstrip()
print(len(data_5)) # 改变后字符串长度: 6
- upper: 小写改大写
# upper: 小写改大写
str15 = 'qrtyQWE帅123'
data_6 = str15.upper()
print(data_6) # QRTYQWE帅123
- lower: 大写改小写
# lower: 大写改小写
str16 = 'qrtyQWE帅123'
data_7 = str16.lower()
print(data_7) # qrtyqwe帅123
- capitalize: 字符串首字母大写
# capitalize: 字符串首字母大写
str17 = 'hello 帅hi english'
data_8 = str17.capitalize()
print(data_8) # Hello 帅hi english
- title: 字符串里面单词首字母大写
# title: 字符串里面单词首字母大写
str18 = 'hello 帅hi english'
data_9 = str18.title()
print(data_9) # Hello 帅Hi English
💥删
- replace:替换
# 默认替换所有
str19 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_10 = str19.replace('哈', '-') # shuju真的很帅-!学习的快乐 ----
print(data_10)# 指定替换次数
str20 = 'shuju真的很帅哈!学习的快乐 哈哈哈哈'
data_11 = str20.replace('哈', '-', 2) # shuju真的很帅-!学习的快乐 -哈哈哈
print(data_11)# 达到删除效果 ---- 删除空格
str21 = 'sh 真的很 帅哈!学习的 快乐 '
data_12 = str21.replace(' ', '')
print(data_12) # sh真的很帅哈!学习的快乐
- replace(old, new [, count])
- old:被替换的元素
- new:替换成什么
- count:可传可不传,可指定替换次数;默认所有
❤️九.字符串拼接
💥拼接符: +
str_1 = '你很'
str_2 = '帅'
splicing = str_1 + str_2
print(splicing) # 你很帅
💥占位符:%s
str_3 = '18'
# 有几个占位符就得传几个字符串进去
placeholder = '%s今年%s岁' % ('小明', str_3)
print(placeholder) # 小明今年18岁
💥join方法
str_4 = '帅'
str_5 = '真的'
str_6 = '他'join_merge = '-'.join([str_6, str_5, str_4])
print(join_merge) # 他-真的-帅# join_merge = ''.join([str_6, str_5, str_4])
# print(join_merge) # 他真的帅
💥format
str_4 = '帅吗?'
str_5 = '真的'
str_6 = '他'# 默认位置 1对1
format_merge_1 = '{}{}很{}'.format(str_6, str_5, str_4)
print(format_merge_1) # 他真的很帅吗?# 根据下标位置 0 1 2
format_merge_2 = '{0}{2}很{1}'.format(str_6, str_4, str_5)
print(format_merge_2) # 他真的很帅吗?# 重新命名,内部指定
format_merge_3 = '{n1}{n3}很{n2}'.format(n1=str_6, n2=str_4, n3=str_5)
print(format_merge_3) # 他真的很帅吗?# python3优化的: 通过f申明,配合{}进行直接指定插入
format_merge_4 = f'{str_6}{str_4}很{str_5}'
print(format_merge_4) # 他真的很帅吗?
⭐十.字符串格式化
#1. %s 占位符
print('%s' % '帅')#2. %r 显示原数据类型
print('%r' % '帅')# %d 整数
print('%d' % 1)# %f 浮点数
print('%f' % 2.1)# %c ASCII
print('%c' % 65)# %o 8进制
print('%o' % 11)# %x 16进制
print('%x' % 11)# %e 科学计数法
print('%e' % 10.3)# -: 左对齐 6:这位置指定长度 3:这位置指定小数点后面保留多少位
print('%-6.3f' % 10.3) # 优先满足小数点后几位数# +:显示正号
print('%+6.3f' % 10.3) # 优先满足小数点后几位数# 格式化长度
print('%5s' % 'ab') # ab
format扩展
# format扩展# 保留小数点后两位
a1 = '{:.2f}'.format(12.333)
print(a1)# 指定传入,保留小数点后两位
a2 = '{s:.2f}'.format(s=12.333)print(a2)
# 百分比格式化
a3 = '{:.2%}'.format(0.333)
print(a3) # 33.30%# 转十六进制
a4 = '{:x}'.format(20)
print(a4)
# 转八进制
a6 = '{:o}'.format(20)
print(a6)# 左对齐,长度为10
a7 = '{a:<10}'.format(a=12.3, b=13.44)
print(a7)
# 传入数据长度不足,用x填充
a8 = '{a:x<10}'.format(a=12.3, b=13.44)
print(a8)
# 右对齐
a9 = '{a:>10}'.format(a=12.3, b=13.44)
print(a9)
# 两边对齐
a10 = '{a:^10}'.format(a=12.3, b=13.44)
print(a10)
相关文章:

【Python字符串攻略】:玩转文字,编织程序的叙事艺术
文章目录 🚀一.字符串基础🌈二.查看数据类型⭐三.转化❤️四.字符串索引🚲五.字符串切片🎬六.字符串切片-步长☔七.反向切片注意事项🚲八.字符串💥查💥改💥删 ❤️九.字符串拼接&…...

element form表单中密码框被自动赋值,并默认背景色为白色,手动输值后背景色才是自己配置的背景色,与表单的自动填充有关
事件背景: 一个表单,有两组需要输入密码的地方,两组都被填充用户名密码,其中一组是其他信息,不是用户名密码,也被填充了,且input背景色是白色,表单中的input已经手动配置为无背景色&…...

【UE5.1 角色练习】15-枪械射击——子弹发射物
目录 效果 步骤 一、创建并发射子弹 二、优化子弹 效果 步骤 一、创建并发射子弹 1. 在前面的文章中(【UE5.1 角色练习】06-角色发射火球-part1)我们创建了蓝图“BP_Skill_FireBall” 这里我们复制一份命名为“BP_Ammo_5mm”,用于表示…...

Zynq7000系列FPGA中的DMA控制器的编程限制
有关DMAC编程时适用的限制信息,有四个考虑因素: 固定非对齐突发Endian swap size restrictions:在数据传输或处理过程中,不同字节序(Endian)之间的转换和对应的限制在DMA周期内更新通道控制寄存器当MFIFO满…...

超简易高效的 AI绘图工具—与sd-webui一致界面,6G显存最高提升75%出图速率!(附安装包)
大家好,我是灵魂画师向阳 今天给大家分享一个基于Stable Diffusion WebUI 构建的AI绘图工具—sd-webui-forge,该工具的目标在于简化插件开发,优化资源管理,加速推理。 Forge承诺永远不会对Stable Diffusion WebUI用户界面添加不…...

ArduPilot开源代码之OpticalFlow_backend
ArduPilot开源代码之OpticalFlow_backend 1. 源由2. Library设计3. 重要例程3.1 OpticalFlow_backend::_update_frontend3.2 OpticalFlow_backend::_applyYaw 4. 总结5. 参考资料 1. 源由 光流计是一种低成本定位传感器,所有的光流计设备传感驱动代码抽象公共部分统…...

设计模式探索:适配器模式
1. 适配器模式介绍 1.1 适配器模式介绍 适配器模式(adapter pattern)的原始定义是:将一个类的接口转换为客户期望的另一个接口,适配器可以让不兼容的两个类一起协同工作。 适配器模式的主要作用是把原本不兼容的接口,…...

OpenCV 寻找棋盘格角点及绘制
目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点(Checkerboard Corners)是计算机视觉中相机标定(Camera Calibration)过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…...

【深度学习】PyTorch深度学习笔记02-线性模型
1. 监督学习 2. 数据集的划分 3. 平均平方误差MSE 4. 线性模型Linear Model - y x * w 用穷举法确定线性模型的参数 import numpy as np import matplotlib.pyplot as pltx_data [1.0, 2.0, 3.0] y_data [2.0, 4.0, 6.0]def forward(x):return x * wdef loss(x, y):y_pred…...

10.FreeRTOS_互斥量
互斥量概述 在博文“ FreeRTOS_信号量 ”中,使用了二进制信号量实现了互斥,保护了串口资源。博文链接如下: FreeRTOS_信号量-CSDN博客 但还是要引入互斥量的概念。互斥量与二进制信号量相比,能够多实现如下两个功能:…...

EtherCAT总线冗余让制造更安全更可靠更智能
冗余定义 什么是总线冗余功能?我们都知道,EtherCAT现场总线具有灵活的拓扑结构,设备间支持线型、星型、树型的连接方式,其中线型结构简单、传输效率高,大多数的现场应用中也是使用这种连接方式,如下图所示…...

Android IdleHandler源码分析
文章目录 Android IdleHandler源码分析概述前提基本用法源码分析添加和删除任务执行任务 应用场景 Android IdleHandler源码分析 概述 IdleHandler是一个接口,它定义在MessageQueue类中,用于在主线程的消息队列空闲时执行一些轻量级的任务。IdleHandle…...

Mac安装stable diffusion 工具
文章目录 1.安装 Homebrew2.安装 stable diffusion webui 的依赖3.下载 stable diffusion webui 代码4.启动 stable diffusion webui 本体5.下载模型6.这里可能会遇到一个clip-vit-large-patch14报错 参考:https://brew.idayer.com/install/stable-diffusion-webui/…...

CVE-2024-6387Open SSH漏洞彻底解决举措(含踩坑内容)
一、漏洞名称 OpenSSH 远程代码执行漏洞(CVE-2024-6387) 二、漏洞概述 Open SSH是基于SSH协议的安全网络通信工具,广泛应用于远程服务器管理、加密文件传输、端口转发、远程控制等多个领域。近日被爆出存在一个远程代码执行漏洞,由于Open SSH服务器端…...

python的简单爬取
需要的第三方模块 requests winr打开命令行输入cmd 简单爬取的基本格式(爬取百度logo为例) import requests url"http://www.baidu.com/img/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png" resprequests.get(url)#回应 #保存到本地 with open(&…...

【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频)
【WEB前端2024】3D智体编程:乔布斯3D纪念馆-第60集-agent训练资讯APP重点推荐AI资讯内容(含视频) 使用dtns.network德塔世界(开源的智体世界引擎),策划和设计《乔布斯超大型的开源3D纪念馆》的系列教程。d…...

【学术会议征稿】第三届智能电网与能源系统国际学术会议
第三届智能电网与能源系统国际学术会议 2024 3rd International Conference on Smart Grid and Energy Systems 第三届智能电网与能源系统国际学术会议(SGES 2024)将于2024年10月25日-27日在郑州召开。 智能电网可以优化能源布局,让现有能源…...

01. 课程简介
1. 课程简介 本课程的核心内容可以分为三个部分,分别是需要理解记忆的计算机底层基础,后端通用组件以及需要不断编码练习的数据结构和算法。 计算机底层基础可以包含计算机网络、操作系统、编译原理、计算机组成原理,后两者在面试中出现的频…...

iOS热门面试题(三)
面试题1:在iOS开发中,什么是MVC设计模式?请详细解释其各个组成部分,并给出一个实际应用场景,包括具体的代码实现。 答案: MVC设计模式是一种在软件开发中广泛使用的架构模式,特别是在iOS开发中…...

ECS中postTransform.Value = float4x4.Scale(1, math.sin(elapsedTime), 1)
在Unity的ECS(Entity Component System)架构中,postTransform.Value float4x4.Scale(1, math.sin(elapsedTime), 1); 用于设置一个变换矩阵的缩放部分。下面是对这行代码的详细解释: postTransform: 这是一个表示变换的组件或结构…...

VLM技术介绍
1、背景 视觉语言模型(Visual Language Models)是可以同时从图像和文本中学习以处理许多任务的模型,从视觉问答到图像字幕。 视觉识别(如图像分类、物体保护和语义分割)是计算机视觉研究中一个长期存在的难题ÿ…...

x264 编码器 AArch64 汇编函数模块关系分析
x264 编码器 AArch64 汇编介绍 x264 是一个流行的开源视频编码器,它实现了 H.264/MPEG-4 AVC 标准。x264 项目致力于提供一个高性能、高质量的编码器,支持多种平台和架构。对于 AArch64(即 64 位 ARM 架构),x264 编码器利用该架构的特性来优化编码过程。在 x264 编码器中,…...

windows10开启防火墙,增加入站规则后不生效,还是不能访问后端程序
一、背景: 公司护网要求开启防火墙,开启防火墙后,前后端分离的项目调试受影响,于是增加入站规则开放固定的后台服务端口,增加的mysql端口3306和redis端口6379,别人都可以访问,但是程序的端口808…...

academic-homepage:快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等,同时页面布局兼容移动端。
今天给大家分享GitHub 上一个开源的 GitHub Pages 模板 academic-homepage。 可帮助你快速搭建个人学术主页,页面内容包括个人简介、教育经历、发布过的学术列表等最基本内容,同时页面布局兼容移动端。 相关链接 github.com/luost26/academic-homepage …...

.env.development、.env.production、.env.staging
环境变量文件(如 .env.development、.env.production、.env.staging)用于根据不同的环境(开发、生产、测试等)配置应用程序的行为。 作用 .env.development:用于开发环境的配置。开发人员在本地开发时会使用这个文件…...

国密证书(gmssl)在Kylin Server V10下安装
1.查看操作系统信息 [root@localhost ~]# cat /etc/.kyinfo [dist] name=Kylin milestone=Server-V10-GFB-Release-ZF9_01-2204-Build03 arch=arm64 beta=False time=2023-01-09 11:04:36 dist_id=Kylin-Server-V10-GFB-Release-ZF9_01-2204-Build03-arm64-2023-01-09 11:04:…...

【数据服务篇】法律快车问答数据:为法律智能化铺就道路
数据来源 法律快车汇集了广泛的法律问题和专业律师的回答,这些来自用户和律师的数据构成了丰富的问答资源。用户通过平台提交各类法律疑问,得到资深律师的详尽解答,形成了一系列真实、多样化的法律案例和讨论。 数据获取见文末。 数据内容…...

各向异性含水层中地下水三维流基本微分方程的推导(二)
各向异性含水层中地下水三维流基本微分方程的推导 参考文献: [1] 刘欣怡,付小莉.论连续性方程的推导及几种形式转换的方法[J].力学与实践,2023,45(02):469-474. 书接上回: 我们能得到三个方向的流入流出平衡方程: ∂ ρ u x ∂ x d x d y d…...

2024 微信小程序 学习笔记 第一天
微信公众平台 (qq.com) 小程序代码的构成 项目结构 JSON 配置文件 WXML 模板 WXSS 样式 JS 逻辑交互 小程序的宿主环境 宿主 通信模型 运行机制 组件 视图组件 view scrioll-view swiper swiper-item swiper属性 text button image image mode属性 小程序API 协…...

PCIe驱动开发(3)— 驱动设备文件的创建与操作
PCIe驱动开发(3)— 驱动设备文件的创建与操作 一、前言 在 Linux 中一切皆为文件,驱动加载成功以后会在“/dev”目录下生成一个相应的文件,应用程序通过对这个名为“/dev/xxx” (xxx 是具体的驱动文件名字)的文件进行相应的操作即…...