Python字符串操作详解(超详细)

Python字符串操作详解

在这里插入图片描述

目录

  • Python字符串操作详解
    • 一. 字符串创建
    • 二. 字符串拼接
      • 1. 使用 `+` 运算符
      • 2. 使用 `.join()` 方法
    • 三. 字符串索引和切片
      • 1. 字符串索引
      • 2. 字符串切片
      • 3. 字符串长度和负索引
      • 4. 字符串不可变性
    • 四. 字符串长度
    • 五. 字符串转换
    • 六. 查找子字符串
    • 七. 字符串替换
    • 八. 字符串拆分
      • 1. 基本用法
      • 2. 示例
      • 3. 注意事项
      • 4. 使用示例
    • 九. 去除字符串首尾空格
      • 1. 基本用法
      • 2. 示例
        • 2.1 移除空白字符
        • 2.2 移除指定字符
      • 3. 注意事项
      • 4. 使用示例
    • 十. 字符串判断
      • 1. `isalpha()`
      • 2. `isdigit()`
      • 3. `islower()`
      • 4. `isupper()`
      • 5. `isspace()`
    • 十一. 字符串格式化
      • 1. 使用 `%` 运算符进行格式化
      • 2. 使用 `format()` 方法进行格式化

一. 字符串创建

  • Python中,字符串可以使用单引号、双引号或三重引号来创建。
  • 使用单引号或双引号创建的字符串是一行字符串。
  • 使用三重引号创建的字符串可以包含多行文本。
str1 = 'Hello, World!'  # 单引号
str2 = "Hello, World!"  # 双引号
str3 = '''Hello, World!'''  # 三重引号
str4 = """Hello, World!"""  # 三重引号
multiline_string = """This is a
multiline
string."""

二. 字符串拼接

1. 使用 + 运算符

最简单的方法是使用 + 运算符将两个字符串连接起来。

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

2. 使用 .join() 方法

  • 允许我们连接一个字符串列表或可迭代对象中的所有字符串。

  • 这种方法在处理大量字符串时通常更高效。

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

在这个例子中,我们将 str_list 列表中的所有字符串连接起来,并且使用空字符串 "" 作为连接符。


三. 字符串索引和切片

1. 字符串索引

  • 在Python中,字符串中的每个字符都有一个索引,可以用来访问该字符。

  • 字符串的第一个字符的索引是 0,第二个字符的索引是 1,依此类推。例如:

s = "Hello, World!"
print(s[0])  # 输出: H
print(s[7])  # 输出: W
print(s[-1])  # 输出: !(负索引表示从末尾开始计数)

2. 字符串切片

  • 切片使用 start:stop:step 的形式,其中 start 表示起始索引,stop 表示结束索引(不包括该索引对应的字符),step 表示步长(默认为1)。
s = "Hello, World!"
print(s[7:])    # 输出: World!(从索引7开始到结尾)
print(s[:5])    # 输出: Hello(从开头到索引5之前)
print(s[3:8])   # 输出: lo, W(从索引3到索引8之前)
print(s[::2])   # 输出: Hlo ol!(每隔一个字符取一个)
print(s[::-1])  # 输出: !dlroW ,olleH(反转字符串)

3. 字符串长度和负索引

  • len() 函数获取字符串的长度,同时也可以使用负索引来从末尾开始访问字符串。
s = "Hello, World!"
print(len(s))     # 输出: 13
print(s[-1])      # 输出: !(倒数第一个字符)
print(s[-3:])     # 输出: ld!(倒数第三个字符到结尾)
print(s[:-3])     # 输出: Hello, Wor(从开头到倒数第三个字符之前)

4. 字符串不可变性

  • 需要注意的是,字符串是不可变的,意味着不能直接修改字符串中的某个字符,但可以通过切片和拼接来达到类似的效果。
s = "Hello, World!"
# s[0] = 'h'  # 这会引发错误,字符串不可变
new_s = 'h' + s[1:]  # 使用切片和拼接来实现字符串的修改
print(new_s)  # 输出: hello, World!

四. 字符串长度

s = "Hello, World!"
print(len(s))  # 输出: 13

五. 字符串转换

  1. s.upper()

    • 该方法返回字符串的大写版本。
    • 示例:
      s = "hello"
      print(s.upper())  # 输出: HELLO
      
  2. s.lower()

    • 该方法返回字符串的小写版本。
    • 示例:
      s = "HELLO"
      print(s.lower())  # 输出: hello
      
  3. s.capitalize()

    • 该方法返回字符串的首字母大写版本,其余字母小写。
    • 示例:
      s = "hello"
      print(s.capitalize())  # 输出: Hello
      
  4. s.title()

    • 该方法返回字符串中每个单词的首字母大写的版本。
    • 示例:
      s = "hello world"
      print(s.title())  # 输出: Hello World
      

六. 查找子字符串

  1. find(substring, start, end) 方法:

    • find() 方法用于在字符串中查找子字符串 substring 第一次出现的位置,并返回其索引值。如果未找到子字符串,则返回 -1。
    • 可选参数 startend 可以指定查找子字符串的起始和结束位置。
    • 示例:
      s = "hello world"
      print(s.find("world"))   # 输出: 6
      print(s.find("python"))  # 输出: -1
      
  2. index(substring, start, end) 方法:

    • index() 方法与 find() 方法类似,用于在字符串中查找子字符串 substring 第一次出现的位置,并返回其索引值。如果未找到子字符串,则会抛出异常。
    • 可选参数 startend 可以指定查找子字符串的起始和结束位置。
    • 示例:
      s = "hello world"
      print(s.index("world"))   # 输出: 6
      # print(s.index("python"))  # 会抛出异常 ValueError: substring not found
      

七. 字符串替换

  • 在Python中,可以使用 replace() 方法来替换字符串中的特定子字符串。
  • 这个方法会创建一个新的字符串,其中指定的子字符串被替换为你提供的新字符串。
new_string = old_string.replace(old_substring, new_substring, count)

其中:

  • old_string 是你要进行替换操作的原始字符串。
  • old_substring 是你想要替换的子字符串。
  • new_substring 是用来替换旧子字符串的新字符串。
  • count 是可选参数,用于指定替换的次数。如果提供了这个参数,只会替换前 count 次出现的子字符串。如果不提供 count 参数,则会替换所有出现的子字符串。

以下是一个简单的示例:

old_string = "I like apples, apples are delicious."
new_string = old_string.replace("apples", "oranges")
print(new_string)

输出:

I like oranges, oranges are delicious.
  • 注意,replace() 方法不会修改原始字符串,而是返回一个新的替换后的字符串。

八. 字符串拆分

当处理文本数据时,经常需要将字符串按照某种规则进行拆分,以便进一步处理或分析。Python 中的 split() 方法就是用来完成这个任务的。

1. 基本用法

split() 方法可以基于指定的分隔符将一个字符串拆分成多个子字符串,并返回一个列表。其基本语法如下:

string.split(separator, maxsplit)
  • string 是要拆分的原始字符串。
  • separator 是用于确定拆分位置的分隔符,默认为任何空白字符(空格、制表符、换行符等)。
  • maxsplit 是可选参数,用于指定拆分的最大次数。如果指定了 maxsplit 参数,最终的列表将包含至多 maxsplit+1 个元素。

2. 示例

假设有一个字符串表示一句英文句子:

sentence = "Hello, world! How are you today?"

我们可以使用空格作为分隔符,将这个句子拆分成单词:

words = sentence.split()
print(words)
# 输出: ['Hello,', 'world!', 'How', 'are', 'you', 'today?']

还可以使用逗号作为分隔符,将句子拆分成短语:

phrases = sentence.split(",")
print(phrases)
# 输出: ['Hello', ' world! How are you today?']

3. 注意事项

  • 如果字符串中不存在分隔符,split() 方法会返回包含原始字符串作为唯一元素的列表。
  • 如果字符串以分隔符开头或结尾,split() 方法会在结果列表中包含空字符串。
  • 如果要拆分的字符串中有连续的分隔符,那么会在结果列表中产生相应数量的空字符串。

4. 使用示例

s = "apple,banana,,orange,"
result = s.split(",")
print(result)
# 输出: ['apple', 'banana', '', 'orange', '']

在这个示例中,结果列表中有一个空字符串是因为连续的两个逗号之间没有其他内容,导致产生了一个空字符串元素。

九. 去除字符串首尾空格

  • strip() 是 Python 中用于移除字符串首尾指定字符(默认为空白字符)的方法。
  • 可以帮助我们清理字符串中不需要的空格、制表符、换行符等,使得字符串更加规范。

1. 基本用法

strip() 方法能够移除字符串首尾的指定字符(默认为空白字符),其基本语法如下:

string.strip([chars])
  • string 是要处理的原始字符串。
  • chars 是可选参数,用于指定要移除的字符集合,默认为移除空白字符。

2. 示例

2.1 移除空白字符
s = "   hello, world!   "
result = s.strip()
print(result)
# 输出: 'hello, world!'

在这个示例中,strip() 方法将字符串 s 首尾的空白字符移除了,返回了一个去掉空白的新字符串。

2.2 移除指定字符
s = "***hello, world!***"
result = s.strip("*")
print(result)
# 输出: 'hello, world!'

在这个示例中,strip("*") 方法将字符串 s 首尾的星号 * 移除了,返回了一个去掉星号的新字符串。

3. 注意事项

  • strip() 方法只会移除字符串开头和结尾的指定字符,不会对字符串中间的字符产生影响。
  • 如果指定了 chars 参数,strip() 方法会移除开头和结尾连续出现的 chars 中的字符,直到遇到非 chars 中的字符为止。

4. 使用示例

s = "+++hello+++world+++"
result = s.strip("+")
print(result)
# 输出: 'hello+++world'

在这个示例中,由于 strip("+") 方法只移除了开头和结尾的加号 +,所以中间的加号没有被移除。

十. 字符串判断

1. isalpha()

isalpha() 方法用于判断字符串是否只包含字母,如果字符串中至少有一个字符且所有字符都是字母,则返回 True,否则返回 False

s = "hello"
print(s.isalpha())  # 输出: True

2. isdigit()

isdigit() 方法用于判断字符串是否只包含数字,如果字符串中至少有一个字符且所有字符都是数字,则返回 True,否则返回 False

s = "123"
print(s.isdigit())  # 输出: True

3. islower()

islower() 方法用于判断字符串中的字母是否全部为小写,如果字符串中至少有一个字母且所有字母都是小写,则返回 True,否则返回 False

s = "hello"
print(s.islower())  # 输出: True

4. isupper()

isupper() 方法用于判断字符串中的字母是否全部为大写,如果字符串中至少有一个字母且所有字母都是大写,则返回 True,否则返回 False

s = "HELLO"
print(s.isupper())  # 输出: True

5. isspace()

isspace() 方法用于判断字符串是否只包含空格,如果字符串中至少有一个字符且所有字符都是空格,则返回 True,否则返回 False

s = "   "
print(s.isspace())  # 输出: True

十一. 字符串格式化

1. 使用 % 运算符进行格式化

name = "Alice"
age = 25
formatted_string = "My name is %s and I am %d years old." % (name, age)
print(formatted_string)

在这个例子中,%s%d 是占位符,分别代表字符串和整数的位置。% 运算符后面的元组 (name, age) 包含了要插入到字符串中的值。

2. 使用 format() 方法进行格式化

name = "Bob"
age = 30
formatted_string = "My name is {} and I am {} years old.".format(name, age)
print(formatted_string)

在这个例子中,{} 被用作占位符,format() 方法将括号中的值依次插入到字符串中。

另外,还可以使用 f-string 来进行字符串格式化:

name = "Carol"
age = 35
formatted_string = f"My name is {name} and I am {age} years old."
print(formatted_string)

在这个例子中,字符串前面的 f 表示这是一个 f-string,花括号内的表达式会被求值并插入到字符串中。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

xml创建模型组合体

XML创建模型组合体 创建步骤模型准备模型处理模型文件XML编写 效果 创建步骤 模型准备 CAD 提供的原始模型如下: 该模型存在的问题: 单位问题:CAD出图的是 mm 为单位,但是 mujoco 建模这边用的是以 m 为单位的;原点…

二刷算法训练营Day22 | 二叉树(8/9)

目录 详细布置: 1. 235. 二叉搜索树的最近公共祖先 2. 701. 二叉搜索树中的插入操作 3. 450. 删除二叉搜索树中的节点 详细布置: 1. 235. 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共…

onenet踩坑连接mqtt

一定注意这个version为默认 完整说明https://open.iot.10086.cn/doc/v5/fuse/detail/922 注意这里的的device是名称,不是id,最好产品开发那里就是都是一个名字

华安保险:核心系统分布式升级,提升保费规模处理能力2-3倍 | OceanBase企业案例

在3月20日的2024 OceanBase数据库城市行的活动中,安保险信息科技部总经理王在平发表了以“保险行业核心业务系统分布式架构实践”为主题的演讲。本文为该演讲的精彩回顾。 早在2019年,华安保险便开始与OceanBase接触,并着手进行数据库的升级…

spring boot3登录开发-2(3邮件验证码接口实现)

⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 目录 写在前面 上文衔接 接口设计与实现 1.接口分析 2.实现思路 3.代码实现 1.定义验证码短信HTML模板枚举类 2.定义验证码业务接口 3. 验证码业务接口实现 4.控制层代码 4.测试 写…

三、Mapper XML的解析和注册使用

流程: 1.Resources加载MyBatis配置文件生成Reader字符流 2.SqlSessionFactoryBuilder开始引导构建SqlSessionFactory,包括两步: 第一步是在XMLConfigBuilder中使用dom4j解析xml文件,将解析的SQL包装成MappedStatement对象存入Con…

微信小程序-案例:本地生活-首页(不使用网络数据请求)

一、 1.页面效果: 二、 1.新建项目并添加页面 在app.json文件中: "pages": ["pages/home/home","pages/message/message","pages/contact/contact"] 2.配置导航栏效果 在app.json文件中: &quo…

Windows11系统 和Android 调试桥(Android Debug Bridge,ADB)工具安装,app抓取日志内容

文章目录 目录 文章目录 安装流程 小结 概要安装流程技术细节小结 概要 Android调试桥(ADB)是一种多功能命令行工具,它允许开发者与连接到计算机上的Android设备进行通信和控制。ADB工具的作用包括但不限于: 安装和卸载应用程序&…

Three.js中的Raycasting技术:实现3D场景交互事件的Raycaster详解

前言 在Web开发中,Three.js是一个极为强大的库,它让开发者能够轻松地在浏览器中创建和展示3D图形。随着3D技术在网页设计、游戏开发、数据可视化等领域的广泛应用,用户与3D场景的交互变得日益重要。而要实现这种交互,一个核心的技…

初识C++ · 反向迭代器简介

目录 前言 反向迭代器的实现 前言 继模拟实现了list和vector之后,我们对迭代器的印象也是加深了许多,但是我们实现的都是正向迭代器,还没有实现反向迭代器,那么为什么迟迟不实现呢?因为难吗?实际上还好。…

点击重置按钮清除el-table排序状态的高亮样式

需求&#xff1a;需要点击按钮的时候&#xff0c;清除掉el-table排序状态的高亮样式 解决方法&#xff1a;table添加ref"tableData",然后使用this.$refs.tableData.clearSort()。 <el-table:data"tableData"style"width: 100%":header-cell-s…

PHP实现抖音小程序用户登录获取openid

目录 第一步、抖音小程序前端使用tt.login获取code 第二步、前端拿到code传给后端 第三步、方法1 后端获取用户信息 第四步、方法2 抖音小程序拿到用户信息把用户信息传给后端 code2Session抖音小程序用户登录后端文档 第一步、抖音小程序前端使用tt.login获取code 前端 …

如何解决chatgpt出现503 bad gateway的问题

昨日&#xff0c;ChatGPT官网挂了&#xff0c;也就是使用web网页端访问的用户&#xff0c;会出现 bad gateway 情况。我们去ChatGPT官方的监控查看&#xff0c;已经展示相关错误。 影响的范围有&#xff1a; 影响了 ChatGPT 所有计划的所有用户。影响包括所有与 ChatGPT 相关…

Ubuntu22.04之解决:emacs无法输入中文问题(二百四十)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

js 选择一个音频文件,绘制音频的波形,从右向左逐渐前进。

选择一个音频文件&#xff0c;绘制波形&#xff0c;从右向左逐渐前进。 完整代码&#xff1a; <template><div><input type"file" change"handleFileChange" accept"audio/*" /><button click"stopPlayback" :…

实战:Zig 编写高性能 Web 服务(2)

1.1 编写 HTTP server 我们从python -m http.server 8000启动得到灵感&#xff0c;先确定好目标&#xff1a; 编写一个HTTP/1.1 http serverzig version 0.12.0 使用zig init搭建项目的前置工作你先自行搭建好&#xff0c;不会的翻看前面铺垫的章节熟悉zig的项目结构。 关键…

大型语言模型智能体(LLM Agent)在实际使用的五大问题

在这篇文章中&#xff0c;我将讨论人们在将代理系统投入生产过程中经常遇到的五个主要问题。我将尽量保持框架中立&#xff0c;尽管某些问题在特定框架中更加常见。 1. 可靠性问题 可靠性是所有代理系统面临的最大问题。很多公司对代理系统的复杂任务持谨慎态度&#xff0c;因…

从入门到精通:Java三目运算符详细教程!

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

操作系统教材第6版——个人笔记3

2.1 处理器 2.1.1 处理器与寄存器 处理器部件的简单示意 用户程序可见寄存器 可以使程序员减少访问主存储器的次数&#xff0c;提高指令执行的效率所有程序可使用&#xff0c;包括应用程序和系统程序数据寄存器&#xff1a;又称通用寄存器地址寄存器&#xff1a;索引、栈指针…

表达式求值中的“整型提升”概念

一.基本原理和概念 如&#xff1a;代码 char a&#xff0c;b&#xff0c;c &#xff1b; a b c &#xff1b; 该代码在计算的时候就会先将 b 和 c 提升为 int 类型进行加法后&#xff0c;再将数据进行截断存放在内存存放变量 a 的空间中。 &#xff08;1&#xff09;提升和截…