Python教程(7)——一文弄懂Python字符串操作(上)|字符串查找|字符串分割|字符串拼接|字符串替换

news2024/11/26 18:54:31

Python字符串操作

  • 字符串简介
  • 字符串查找
    • 使用 in 关键字
    • 使用 find() 方法
    • 使用 index() 方法
    • 使用正则表达式
  • 字符串替换
    • 使用 replace() 方法
    • 使用正则表达式
    • 使用字符串模板
  • 字符串分割
  • 字符串拼接
    • 使用加号 (+) 运算符
    • 使用字符串的格式化方法
    • 使用 f-string(格式化字符串)
    • 使用字符串的 join() 方法

字符串简介

在计算机编程中,字符串是由字符组成的字节序列。在Python中,字符串是表示文本数据的数据类型,由一系列 Unicode 字符组成。字符串可以包含字母、数字、标点符号、空格以及其他特殊字符。实际工作当中,接触最多的可能就是字符串了。

字符串也是Python中最基本的类型,Python中的字符串类型可以使用引号括起来。可以使用单引号、双引号或三引号来定义字符串。

str1 = 'Hello'
str2 = "World"
str3 = """Python"""

可以使用索引运算符([])来访问字符串中的单个字符。字符串的第一个字符索引为0,最后一个字符索引为-1,可以使用负数进行倒序访问。例如:

str = "Hello, World!"
print(str[0])      # 输出 'H'
print(str[-1])     # 输出 '!'

字符串还可以通过加号(+)进行拼接,例如:

str1 = "Hello"
str2 = "World"
str3 = str1 + " " + str2
print(str3)   # 输出 'Hello World'

Python提供了丰富的字符串方法,用于处理字符串的操作,例如转换大小写、查找、替换等。还有格式化字符串的方法,用来替换占位符以生成特定格式的字符串。字符串类型说简单很简单,因为就单纯的字符串变化,说复杂也很复杂,结合其他相关类型,真的可以变化莫测。

字符串查找

在 Python 中,字符串查找是非常基础的功能,有几种常用的方法可以用来查找字符串中的子串或特定字符:

使用 in 关键字

使用 in 关键字。可以判断一个字符串是否包含另一个子串,这种方式简单方便,在编程当中经常会被用到。

str = "Hello, World!"
if "Hello" in str:
   print("包含 'Hello'")
else:
   print("不包含 'Hello'")

使用 find() 方法

使用 find() 方法。可以返回子串在字符串中第一次出现的索引值。如果找不到子串,返回 -1。

str = "Hello, World!"
index = str.find("World")
if index != -1:
   print("子串 'World' 的索引值为", index)
else:
   print("未找到子串 'World'")

使用 index() 方法

index()方法与find()方法类似,但是如果找不到子串,会抛出ValueError异常。

str = "Hello, World!"
try:
   index = str.index("World")
   print("子串 'World' 的索引值为", index)
except ValueError:
   print("未找到子串 'World'")

使用正则表达式

Python 提供了re模块,可以使用正则表达式来进行复杂的字符串匹配与查找操作,需要说明的是正则表达式的用法千变万化,需要根据实际情况来使用。

import re

str = "Hello, World!"
pattern = r"World"
match = re.search(pattern, str)

if match:
   print("找到子串 'World'")
   start_index = match.start()
   end_index = match.end()
   print("子串的起始索引为", start_index)
   print("子串的结束索引为", end_index)
else:
   print("未找到子串 'World'")

上面就是一些常用的字符串查找的方法,可以根据需求选择合适的方法。需要注意的是,这些方法都是区分大小写的。如果想要进行大小写不敏感的查找,可以通过将字符串转换为统一的大小写来实现。

字符串替换

在一些编程当中,字符串替换是非常常见的操作,在Python中,可以使用不同的方法来替换字符串中的特定子串或字符,下面是一些常用的方法。

使用 replace() 方法

replace() 方法可以替换字符串中的所有匹配子串为新的子串。

str = "Hello, World!"
new_str = str.replace("World", "Python")
print(new_str)  # 输出 "Hello, Python!"

replace() 方法还可以指定替换的次数,只替换前几个匹配项。

str = "Hello, World!"
new_str = str.replace("l", "L", 2)
print(new_str)  # 输出 "HeLLo, World!"

使用正则表达式

可以利用 re 模块的 sub() 函数来使用正则表达式替换匹配的子串。使用正则表达式可以更灵活地进行替换操作,例如根据匹配结果动态替换内容。

import re

str = "Hello, World!"
new_str = re.sub(r"World", "Python", str)
print(new_str)  # 输出 "Hello, Python!"

使用字符串模板

使用字符串模板可以更加直观地进行替换,将需要替换的部分使用占位符表示。可以在字符串模板中定义多个占位符,并通过 format() 方法传入对应的值进行替换。

template = "Hello, {name}!"
new_str = template.format(name="Python")
print(new_str)  # 输出 "Hello, Python!"

字符串分割

字符串分割是指将一个字符串按照特定标记或规则将其拆分成多个子字符串的过程。将一个字符串分割成多个部分可以方便地处理和操作字符串的不同部分。在字符串分割过程中,需要指定一个分隔符或分割规则来确定拆分的位置。分隔符可以是一个字符,也可以是一个字符串。

假设有一个字符串"Hello,World!",想将其分割为两部分,可以使用逗号作为分隔符,分割"Hello"和"World!"两个子字符串。

在Python中,你可以使用字符串的split()方法来分割字符串。这个方法会根据指定的分隔符将字符串分割成多个子字符串,并返回一个包含这些子字符串的列表。在split()方法中,你可以传入一个分隔符作为参数,如果不指定分隔符,默认以空格作为分隔符。

# 分割以空为分隔符的字符串
str1 = "Hello World"
split = str1.split()
print(split_result)  # Output: ['Hello', 'World']

 分割以逗号为分隔符的字符串
str = "Apple, Banana, Orange"
split_result = str2.split(", ")
print(split_result)  # Output: ['Apple', 'Banana', 'Orange']

# 分割以换行符为分隔符的字符串
str3 = "Line 1\nLine 2\nLine 3"
split_result = str3.split("\n")
print(split_result)  # Output: ['Line 1', 'Line 2', 'Line 3']

字符串拼接

字符串拼接看起来好像很简单,但是如果需要按照某种规则来拼接的话,可能也是需要一些方法的。在Python中,你可以使用多种方式进行字符串的拼接。

使用加号 (+) 运算符

使用加号 (+) 运算符,这是最简单的字符串拼接方法,直接通过(+)运算符将两个字符串拼接起来。

str1 = "Hello"
str2 = "World!"
result = str1 + "," + str2
print(result)  # 输出: Hello,World!

使用字符串的格式化方法

字符串的格式化方法通过占位符 {} 插入变量或表达式的值,并使用 format() 方法传递要换的内容。format() 方法可以接受多个参数,按照传入的顺序替换占位符。

str1 = "Hello"
str2 = "World!"
result = "{},{}".format(str1, str2)
print(result)  # 输出: Hello,World!

使用 f-string(格式化字符串)

f-string 是python新引入的一种字符串格式化的简便方法,它在字符串前加上 f 前缀。在 f-string 中,可以直接在花括号 {} 中引用变量、表达式或函数调用,并将其值插入到字符串中。

str1 = "Hello"
str2 = "World!"
result = f"{str1},{str2}"
print(result)  # 输出: Hello,World!

使用字符串的 join() 方法

join() 方法可以将一个可迭代对象中的元素连接成一个新的字符串。它的工作原理是在指定的分隔符上使用调用该方法的字符串作为粘合剂,将可迭代对象中的每个元素连接起来。在示例中," ".join([str1, str2]) 使用空格作为分隔符将列表 [str1, str2] 中的元素连接起来。

str1 = "Hello"
str2 = "World!"
result = ",".join([str1, str2])
print(result)  # 输出: Hello,World!

需要注意的是,使用加号 (+)和join 进行字符串拼接时,需要保证所有操作数都是字符串类型。如果有其他类型的对象,需要先将其转换为字符串再进行拼接。而使用字符串的格式化方法和 f-string 则可以直接将其他类型的对象插入到字符串中。

更多精彩内容,请关注同名公众:一点sir(alittle-sir)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/867529.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型训练时间估算

文章目录 开激活重计算不开激活重计算开激活重计算 GPU利用率一般在 0.3 - 0.55 之间,假定为0.45 4090 理论性能:FP16:82.58 TFLOPS 不开激活重计算 我们来说一下系数8或6是怎么来的: 对于每个模型参数,都进行2次浮点数计算,即计算Y = AB 时,先将元素按位相乘,再按位相…

【笔记】软件测试07——web自动化测试(unittest)

五)unittest框架 unittest框架是什么?为什么要使用unittest框架 在unittest框架中创建测试在脚本中添加断言通过unittest框架对脚本进行管理自定义测试报告unittest框架中的参数化操作python unittest: Selenium python unittest framework 01通过unittest框架创建测试 必须…

侯捷 C++ part2 兼谈对象模型笔记——5 三个C++11新特性

5 三个C11新特性 5.1 variadic templates 模板参数可变化&#xff0c;其语法为 ... (加在哪看情况) // 当参数pack里没有东西了就调用这个基本函数结束输出 void print() { }// 用于打印多个参数的可变参数模板函数 template <typename T, typename... Args> void pri…

10.多线程

文章目录 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么?10.2线程有哪些基本状态? 10.1简述线程、程序、进程的基本概念。以及他们之间关系是什么? 线程与进程相似&#xff0c;但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程…

在next中使用antd表格,表格使用render函数报错

Error: Functions cannot be passed directly to Client Components unless you explicitly expose it by marking it with "use server". {title: "姓名", dataIndex: "name", key: ..., render: function} 错误描述&#xff1a;使用antd的tabl…

cocos 导出微信小游戏没有app.json

app.json对应的是微信小程序 game.json对应的是微信小游戏 只需要导入项目时选择小游戏再导入项目即可

DRF的Serializer组件(源码分析)

1. 数据校验 drf中为我们提供了Serializer&#xff0c;他主要有两大功能&#xff1a; 对请求数据校验&#xff08;底层调用Django的Form和ModelForm&#xff09;对数据库查询到的对象进行序列化 示例一: 基于Serializer # models.py class UserInfo(models.Model):username…

商品执行标准和卫生标准

纸巾 纸巾纸(抽纸) 作用&#xff1a;柔韧细腻、不易掉毛掉粉&#xff0c;擦汗时不易破碎、残留&#xff0c;常用于面部的清洁。 执行标准GB/T20808 卫生标准GB15979 主要成份&#xff1a;原生木浆 质量等级&#xff1a;优等品 细菌菌落总数<200cfu/g 卫生纸(厕纸) 作用&…

Scratch 之 枪战的枪械画法

大家可以参考百度图片寻找到的AK-47图片&#xff1a;AK47图片 此处我以MK18作为参照&#xff0c;MK18的造型可以在资源中获取 资源链接&#xff1a;https://download.csdn.net/download/leyang0910/88136393 对于不必要的&#xff08;繁琐的&#xff09;线条&#xff0c;我们可…

配置vscode

配置vscode 设置相关 网址&#xff1a;https://code.visualstudio.com/ 搜索不要用百度用这个&#xff1a;cn.bing.com 1.安装中文包 Chinese (Simplified) (简体中文) 2.安装 open in browser 3.安装主题 Atom One Dark Theme 4. 安装图标样式 VSCode Great Icons 5.安装 L…

【力扣每日一题】23. 合并 K 个升序链表 暴力法-快排 8.12打卡

文章目录 题目思路代码 题目 合并 K 个升序链表 难度&#xff1a; 困难 描述&#xff1a; 给你一个链表数组&#xff0c;每个链表都已经按升序排列。 请你将所有链表合并到一个升序链表中&#xff0c;返回合并后的链表。 示例 1&#xff1a; 输入&#xff1a;lists [[1,4,5…

Qt6之QStackedWidget——Qt仿ToDesk(2)

一、 QStackedWidget概述 QStackedWidget也叫堆栈窗体类&#xff0c;它继承于QFrame&#xff0c;主要与QListWidget等结合使用&#xff0c;实现“一个界面多个页面切换”。 二、QStackedWidget示例 如下图&#xff0c;当点击左边 QListWidget里的菜单时&#xff0c;右边跟随切…

深入浅出流批一体理论篇——数据架构的演进

一、前大数据时代 人人都知道罗马不是一天建成的&#xff0c;但没人告诉过你罗马是怎样一天天建成的。你看见罗马时&#xff0c;它就已经是罗马了。当我进阿里时&#xff0c;正是这样的感觉。我没有经历过阿里数据架构&#xff08;包括平台工具&#xff09;从0到1的过程。我相…

计算机科学的伟大变革:从机械计算到人工智能

摘要 计算机科学作为一门学科&#xff0c;经历了几十年的发展和演变。本论文旨在探讨计算机科学领域的伟大变革&#xff0c;从最早的机械计算设备到如今的人工智能系统。通过回顾历史、分析技术进步以及展望未来&#xff0c;我们可以清晰地看到计算机科学如何塑造了现代社会&a…

Flink学习记录

可以快速搭建一个Flink编写程序 mvn archetype:generate \-DarchetypeGroupIdorg.apache.flink \-DarchetypeArtifactIdflink-quickstart-java \-DarchetypeVersion1.17.1 \-DgroupIdcom.zxx.langhuan \-DartifactIdlanghuan-flink \-Dversion1.0.0-SNAPSHOT \-Dpackagecom.zx…

SpringBoot复习:(33)WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter

WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter实现了WebMvcConfigurer接口&#xff0c;重写了一些方法&#xff0c;也就是默认对Spring Mvc进行了一些配置: 该静态类上有个**Import**注解&#xff1a; Import(EnableWebMvcConfiguration.class) 它的父类…

前端笔试题1

HTML/CSS 题1&#xff1a; 1&#xff0e;使用CSS 让该节点不可见&#xff0c;方法越多越好。 <div class"hidden">Hi</div> 使用CSS 让节点不可见的方法有以下几种&#xff1a; 把 visibility 属性设置为 hidden&#xff0c;这样元素框不会被绘制&…

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口

伯俊ERP对接打通金蝶云星空表头表体组合查询接口与采购订单新增接口 数据源平台:伯俊ERP 伯俊科技&#xff0c;依托在企业信息化建设方面的领先技术与实践积累&#xff0c;致力于帮助企业实现全渠道一盘货。伯俊提供数字经营的咨询与系统实施&#xff0c;助力企业信息化升级、加…

【C++】STL初识

1.STL的基本概念 2.vector存放内置数据类型 #include <iostream> using namespace std; #include <vector> #include <algorithm>void MyPrint(int val) {cout << val << endl; }void test01() {//创建vector容器对象&#xff0c;并且通过模板参…