python记录之字符串
在Python中,字符串是一种非常常见且重要的数据类型,用于存储文本信息。下面,我们将对Python字符串进行深入的讲解,包括其基本操作、常见方法、格式化以及高级特性。
1. 字符串的创建
在Python中,字符串可以通过单引号、双引号或三引号(单三引号或双三引号)来创建。
# 使用单引号创建字符串
s1 = 'Hello, World!'# 使用双引号创建字符串(和单引号一样)
s2 = "Hello, World!"# 使用三引号创建多行字符串
s3 = """
This is a multiline string.
It can span multiple lines.
"""
2. 字符串的基本操作
2.1 索引和切片
字符串中的字符可以通过索引来访问,索引从0开始。切片操作可以获取字符串的子串。
s = 'Hello, World!'
print(s[0]) # 输出 'H'
print(s[4:10]) # 输出 'o, Wor'
2.2 字符串连接和重复
使用加号+可以连接两个字符串,使用乘号*可以重复字符串。
s1 = 'Hello'
s2 = 'World'
s3 = s1 + ' ' + s2 # 连接字符串
print(s3) # 输出 'Hello World's4 = 'Hi' * 3 # 重复字符串
print(s4) # 输出 'HiHiHi'
2.3 成员判断
使用in关键字可以判断一个字符或子串是否存在于字符串中。
s = 'Hello, World!'
print('o' in s) # 输出 True
print('Python' in s) # 输出 False
3. 字符串的常用方法
Python字符串提供了大量的内置方法,用于处理和分析字符串。
3.1 查找和替换
find(substr, start=0, end=len(string)):查找子串,返回索引或-1。replace(old, new[, count]):替换子串。
s = 'Hello, World!'
print(s.find('World')) # 输出 7
print(s.replace('World', 'Python')) # 输出 'Hello, Python!'
3.2 分割和连接
split([sep[, maxsplit]]):根据分隔符分割字符串。join(iterable):使用指定的字符串将序列中的元素连接成一个新的字符串。
s = 'apple,banana,cherry'
print(s.split(',')) # 输出 ['apple', 'banana', 'cherry']
print(' '.join(['Hello', 'World'])) # 输出 'Hello World'
3.3 大小写转换
lower():将字符串转换为小写。upper():将字符串转换为大写。capitalize():将字符串的首字母转换为大写。title():将字符串的每个单词的首字母转换为大写。
s = 'Hello World'
print(s.lower()) # 输出 'hello world'
print(s.upper()) # 输出 'HELLO WORLD'
print(s.capitalize()) # 输出 'Hello world'
print(s.title()) # 输出 'Hello World'
3.4 去除空白字符
strip([chars]):去除字符串开头和结尾的空白字符(或其他指定字符)。lstrip([chars]):去除字符串开头的空白字符(或其他指定字符)。rstrip([chars]):去除字符串结尾的空白字符(或其他指定字符)。
s = ' Hello World '
print(s.strip()) # 输出 'Hello World'
4. 字符串格式化
Python提供了多种字符串格式化的方式,包括老式的%格式化、str.format()方法和f-string(Python 3.6+)。
4.1 %格式化
name = 'Alice'
age = 30
print('My name is %s and I am %d years old.' % (name, age))
4.2 str.format()方法
name = "Alice"
age = 30
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string) # 输出: My name is Alice and I am 30 years old.
4.3 f-string(格式化字符串字面量)
f-string 是 Python 3.6 之后引入的一种新的字符串格式化方法,它允许你在字符串中嵌入表达式,这些表达式在运行时会被计算并转换为字符串。
name = 'Alice'
age = 30
print(f'My name is {name} and I am {age} years old.')
5. 字符串编码
在 Python 中,字符串默认是以 Unicode 编码的。Unicode 是一种字符集,它为世界上几乎所有的字符都分配了一个唯一的编号(称为码点或 Unicode 码位)。当你处理外部数据时,可能会遇到不同的编码方式,如 UTF-8、GBK、ASCII 等。Python 提供了 encode() 和 decode() 方法来处理字符串的编码和解码。
# 编码为 UTF-8
utf8_encoded = 'Hello, World!'.encode('utf-8')# 解码 UTF-8 编码的字节串
decoded_string = utf8_encoded.decode('utf-8')
print(decoded_string) # 输出 'Hello, World!'
6. 字符串的高级特性
6.1 字符串是不可变的
Python 中的字符串是不可变的,这意味着一旦创建了一个字符串,你就不能更改它的内容。但是,你可以通过拼接、切片等方式创建新的字符串。
6.2 字符串的原地操作
虽然字符串本身是不可变的,但 Python 的某些操作(如 join()、replace() 等)会返回新的字符串,而不是修改原始字符串。这些操作是原地(in-place)的,因为它们不会修改任何已存在的对象。
6.3 字符串与字节串的转换
在处理文件、网络数据等时,你经常会遇到字节串(bytes)而不是字符串。Python 提供了 encode() 和 decode() 方法来在字符串和字节串之间进行转换。
6.4 字符串模板
除了上述的格式化方法外,Python 还提供了 string.Template 类来创建简单的字符串模板。这在你需要多次插入相同的数据到字符串的不同位置时非常有用。
from string import Templates = Template('Hello, $name! You are $age years old.')
print(s.substitute(name='Alice', age=30)) # 输出 'Hello, Alice! You are 30 years old.'
7. 总结
Python 的字符串功能强大且易于使用。通过掌握字符串的基本操作、常用方法、格式化方式以及高级特性,你可以更有效地处理和分析文本数据。无论是进行简单的文本处理,还是构建复杂的文本分析系统,Python 的字符串功能都能为你提供强大的支持。
相关文章:
python记录之字符串
在Python中,字符串是一种非常常见且重要的数据类型,用于存储文本信息。下面,我们将对Python字符串进行深入的讲解,包括其基本操作、常见方法、格式化以及高级特性。 1. 字符串的创建 在Python中,字符串可以通过单引号…...
Elasticsearch 认证模拟题 - 15
一、题目 原索引 task1 的字段 title 字段包含单词 The,查询 the 可以查出 1200 篇文档。重建 task1 索引为 task1_new,重建后的索引, title 字段查询 the 单词,不能匹配到任何文档。 PUT task1 {"mappings": {"…...
g++ 预处理 编译 汇编 链接 命令
g 预处理 编译 汇编 链接 命令 在命令行中使用 g 预处理、编译、汇编和链接源代码文件通常遵循以下步骤: 预处理(Preprocessing):将源代码文件转换为经过预处理器处理的中间文件。 g -E source.cpp -o source.i 编译ÿ…...
计算机视觉中的low-level与 high-level任务
文章目录 low-level任务high-level任务区别联系others参考在计算机视觉领域中,low-level任务和high-level任务是两个重要的概念,他们分别涉及图像处理和分析的不同的层次。 low-level任务 low-level任务主要关注的是图像的底层特征,如颜色、纹理、边缘、形状等。通常涉及对…...
安徽京准NTP时钟系统:GPS北斗卫星授时下的生活重塑
安徽京准NTP时钟系统:GPS北斗卫星授时下的生活重塑 安徽京准NTP时钟系统:GPS北斗卫星授时下的生活重塑 时间的流逝自古以来时钟都是人类生活与活动的基础。然而,随着科技的进步,我们对时间管理和测量的方法已经发生了翻天覆地的变…...
图论第8天
685.冗余连接II 这题需要考虑两种情况: 1.两个输入 2.没有两个输入就是有成环 class Solution { public:static const int N 1005;int father[N];int n;void init(){for (int i 0; i < n; i){father[i] i;}}int find(int x){return x father[x] ? x : f…...
Python怎么配置环境变量:深度探索与实战指南
Python怎么配置环境变量:深度探索与实战指南 在Python编程的世界中,环境变量的配置是一个至关重要的步骤。它不仅影响着Python解释器的运行,还关系到各种第三方库和工具的使用。本文将带你深度探索如何配置Python的环境变量,并为…...
计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)
前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算…...
HTML做成一个炫酷跳动爱心的页面
大家好,今天制作制作一个炫酷跳动爱心的页面! 先看具体效果: 要创建一个炫酷跳动爱心的HTML页面,你可以使用HTML、CSS和JavaScript的组合。以下是一个简单的示例,它使用CSS动画和JavaScript来实现跳动效果。 首先&…...
React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放
图片预览和视频在线播放 需求描述 实现播放视频的需求时,往往是前端直接加载一个mp4文件,这样做法在遇到视频文件较大时,容易造成卡顿,不能及时加载出来。我们可以将视频进行切片,然后分段加载。播放一点加载一点&am…...
Suse Linux ssh配置免密后仍需要输入密码
【问题描述】 Suse Linux已经配置了ssh免密,但无法ssh到目标服务器。 对自身的ssh登陆也需要输入密码。 系统–Suse 15 SP5 【重现步骤】 1.使用ssh-keygen -t rsa生产key文件 2.使用ssh-copy-id拷贝public key到目标机器(或者自身) 3.配置成功后ssh 目标时仍需要输…...
apifox 生成签名
目录 前言准备编写签名脚本签名说明捋清思路编码获取签名所需的参数生成签名将签名放到合适的位置完整代码 在apifox中配置脚本新增公共脚本引用公共脚本添加环境变量 参考 前言 略 准备 查看apifox提供的最佳实践文章:接口签名如何处理 编写签名脚本 签名说明…...
介绍建造者模式
建造者模式 将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示 四种角色 Product 产品角色 指的是一个具体的产品对象Builder 抽象建造者 创建一个产品对象的各个部件的接口/抽象类ConcreteBuilder 具体建造者 实现或继承抽象建造者接口…...
【全部更新完毕】2024全国大学生数据统计与分析竞赛B题思路代码文章教学数学建模-电信银行卡诈骗的数据分析
电信银行卡诈骗的数据分析 摘要 电信银行卡诈骗是当前社会中严重的犯罪问题,分析电信银行卡交易数据,找出高风险交易特征,建立预测模型,将有助于公安部门和金融机构更好地防范诈骗行为,保障用户的财产安全。 针对问…...
【应用浅谈】Odoo的库存计价与产品成本(三)
序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo的库存(Stock)模块拥有众多功能,其中库存计价是一项非常重要的功能,原生的成本方法分三种:【标准成本】,【平均成本】,【先进先出】&#…...
数据结构之ArrayList与顺序表(下)
找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏:数据结构(Java版) 目录 ArrayList的具体使用 118. 杨辉三角 扑克洗牌算法 接上篇:数据结构之ArrayLis…...
openi启智社区 aarch64 npu环境安装飞桨paddlepaddle和PaddleNLP(失败)
以前在启智社区都是编译安装飞桨,这回看到飞桨提供了npu安装包,兴冲冲的以为安装很简单。 之所以安装飞桨,是因为想在启智社区的启智大脑调试环境使用最新的PaddleNLP,结果报错:No module named paddle.nn.layer.laye…...
【漏洞复现】多客圈子论坛系统 httpGet 任意文件读取漏洞
0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络,它提供了用户之间交流、分享、讨论的平台。在这个系统中,用户可以创建、加入不同的圈子,圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…...
46-1 护网溯源 - 钓鱼邮件溯源
一、客户提供钓鱼邮件样本 二、行为分析 三、样本分析 对钓鱼邮件中的木马程序1111.exe文件进行了分析,提交了360安全大脑沙箱云和微步在线云沙箱。 360安全大脑沙箱云显示,该1111.exe文件存在危险,因此在解压时需要谨慎操作,以免触发木马程序。 建议使用360压缩软件进行…...
鸿蒙低代码开发一个高频问题
在版本是DevEco Studio 3.1.1 Release,SDK是3.1.0(API9)。 创建和设计的visual文件经常会遇到无法渲染的情况,或者自定义组件在Custom列表中突然不见了的情况。 有以下报错信息的: JSON schema validation error: data/visualModel/value/…...
Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
聊一聊接口测试的意义有哪些?
目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开,首…...
初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
