当前位置: 首页 > news >正文

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 编译&#xff…...

计算机视觉中的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 这题需要考虑两种情况&#xff1a; 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怎么配置环境变量&#xff1a;深度探索与实战指南 在Python编程的世界中&#xff0c;环境变量的配置是一个至关重要的步骤。它不仅影响着Python解释器的运行&#xff0c;还关系到各种第三方库和工具的使用。本文将带你深度探索如何配置Python的环境变量&#xff0c;并为…...

计网期末复习指南(六):应用层(DNS、FTP、URL、HTTP、SMTP、POP3)

前言&#xff1a;本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点&#xff0c;从计算机网络体系结构出发到应用层&#xff0c;每一个协议层通过一篇文章进行总结&#xff0c;本系列正在持续更新中... 计网期末复习指南&#xff08;一&#xff09;&#xff1a;计算…...

HTML做成一个炫酷跳动爱心的页面

大家好&#xff0c;今天制作制作一个炫酷跳动爱心的页面&#xff01; 先看具体效果&#xff1a; 要创建一个炫酷跳动爱心的HTML页面&#xff0c;你可以使用HTML、CSS和JavaScript的组合。以下是一个简单的示例&#xff0c;它使用CSS动画和JavaScript来实现跳动效果。 首先&…...

React + SpringBoot实现图片预览和视频在线播放,其中视频实现切片保存和分段播放

图片预览和视频在线播放 需求描述 实现播放视频的需求时&#xff0c;往往是前端直接加载一个mp4文件&#xff0c;这样做法在遇到视频文件较大时&#xff0c;容易造成卡顿&#xff0c;不能及时加载出来。我们可以将视频进行切片&#xff0c;然后分段加载。播放一点加载一点&am…...

Suse Linux ssh配置免密后仍需要输入密码

【问题描述】 Suse Linux已经配置了ssh免密&#xff0c;但无法ssh到目标服务器。 对自身的ssh登陆也需要输入密码。 系统–Suse 15 SP5 【重现步骤】 1.使用ssh-keygen -t rsa生产key文件 2.使用ssh-copy-id拷贝public key到目标机器(或者自身) 3.配置成功后ssh 目标时仍需要输…...

apifox 生成签名

目录 前言准备编写签名脚本签名说明捋清思路编码获取签名所需的参数生成签名将签名放到合适的位置完整代码 在apifox中配置脚本新增公共脚本引用公共脚本添加环境变量 参考 前言 略 准备 查看apifox提供的最佳实践文章&#xff1a;接口签名如何处理 编写签名脚本 签名说明…...

介绍建造者模式

建造者模式 将一个复杂对象的创建与它的表示分离&#xff0c;使得同样的构建过程可以创建不同的表示 四种角色 Product 产品角色 指的是一个具体的产品对象Builder 抽象建造者 创建一个产品对象的各个部件的接口/抽象类ConcreteBuilder 具体建造者 实现或继承抽象建造者接口…...

【全部更新完毕】2024全国大学生数据统计与分析竞赛B题思路代码文章教学数学建模-电信银行卡诈骗的数据分析

电信银行卡诈骗的数据分析 摘要 电信银行卡诈骗是当前社会中严重的犯罪问题&#xff0c;分析电信银行卡交易数据&#xff0c;找出高风险交易特征&#xff0c;建立预测模型&#xff0c;将有助于公安部门和金融机构更好地防范诈骗行为&#xff0c;保障用户的财产安全。 针对问…...

【应用浅谈】Odoo的库存计价与产品成本(三)

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo的库存&#xff08;Stock&#xff09;模块拥有众多功能&#xff0c;其中库存计价是一项非常重要的功能&#xff0c;原生的成本方法分三种&#xff1a;【标准成本】&#xff0c;【平均成本】&#xff0c;【先进先出】&#…...

数据结构之ArrayList与顺序表(下)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;数据结构&#xff08;Java版&#xff09; 目录 ArrayList的具体使用 118. 杨辉三角 扑克洗牌算法 接上篇&#xff1a;数据结构之ArrayLis…...

openi启智社区 aarch64 npu环境安装飞桨paddlepaddle和PaddleNLP(失败)

以前在启智社区都是编译安装飞桨&#xff0c;这回看到飞桨提供了npu安装包&#xff0c;兴冲冲的以为安装很简单。 之所以安装飞桨&#xff0c;是因为想在启智社区的启智大脑调试环境使用最新的PaddleNLP&#xff0c;结果报错&#xff1a;No module named paddle.nn.layer.laye…...

【漏洞复现】多客圈子论坛系统 httpGet 任意文件读取漏洞

0x01 产品简介 多客圈子论坛系统是一种面向特定人群或特定话题的社交网络&#xff0c;它提供了用户之间交流、分享、讨论的平台。在这个系统中&#xff0c;用户可以创建、加入不同的圈子&#xff0c;圈子可以是基于兴趣、地域、职业等不同主题的。用户可以在圈子中发帖、评论、…...

46-1 护网溯源 - 钓鱼邮件溯源

一、客户提供钓鱼邮件样本 二、行为分析 三、样本分析 对钓鱼邮件中的木马程序1111.exe文件进行了分析,提交了360安全大脑沙箱云和微步在线云沙箱。 360安全大脑沙箱云显示,该1111.exe文件存在危险,因此在解压时需要谨慎操作,以免触发木马程序。 建议使用360压缩软件进行…...

鸿蒙低代码开发一个高频问题

在版本是DevEco Studio 3.1.1 Release&#xff0c;SDK是3.1.0(API9)。 创建和设计的visual文件经常会遇到无法渲染的情况&#xff0c;或者自定义组件在Custom列表中突然不见了的情况。 有以下报错信息的&#xff1a; JSON schema validation error: data/visualModel/value/…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 &#xff08;1&#xff09;连接查询&#xff08;JOIN&#xff09; 内连接&#xff08;INNER JOIN&#xff09;&#xff1a;返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

MongoDB学习和应用(高效的非关系型数据库)

一丶 MongoDB简介 对于社交类软件的功能&#xff0c;我们需要对它的功能特点进行分析&#xff1a; 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具&#xff1a; mysql&#xff1a;关系型数据库&am…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡&#xff08;如 HAProxy、AWS NLB、阿里 SLB&#xff09;发起上游连接时&#xff0c;将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后&#xff0c;ngx_stream_realip_module 从中提取原始信息…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

Mysql8 忘记密码重置,以及问题解决

1.使用免密登录 找到配置MySQL文件&#xff0c;我的文件路径是/etc/mysql/my.cnf&#xff0c;有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...

【SpringBoot自动化部署】

SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一&#xff0c;能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时&#xff0c;需要添加Git仓库地址和凭证&#xff0c;设置构建触发器&#xff08;如GitHub…...