编织魔法:探索Python字符串的奇幻世界

news2024/12/27 11:18:30

在这里插入图片描述

文章目录

  • 前言
  • 什么是 python 字符串
  • 通过下标(索引)来访问字符串中的字符
  • 字符串的切片操作
  • 字符串常用的方法
    • find() 查找子串
    • index() 查找子串
    • rfind() / rindex()
    • count() 返回某个子串在字符串中出现的次数
    • replace() 替换
    • split() 按照指定字符分割字符串
    • join() 用一个字符或者子串合并含有多个字符串的序列
    • capitalize() 将字符串的第一个字符大写,其余的字符小写
    • title() 将字符串每个单词的首字母大写
    • lower() 将字符串中的字符都转换为小写
    • upper() 将字符串中的字符都转换为大写
    • lstrip() 删除字符串左边部分多余的空白
    • rstrip() 删除字符串右边部分多余的空白
    • strip() 删除字符串左边部分和右边部分多余的空白
    • ljust() 左对齐
    • rjust() 右对齐
    • center() 居中对齐
    • startswith() 判断字符串是否是以某子串开头
    • endswith() 判断字符串是否以某一字串结束
    • isalpha() 判断字符串是否只包含字母
    • isdigit() 判断字符串是否只包含数字
    • isalnum() 判断字符串是否只包含字母、数字、数字字母组合
    • isspace() 判断字符串是否只有空格
  • 总结

前言

在当今计算机编程领域中,Python语言以其简洁、优雅和易读的特性,成为了最受欢迎的编程语言之一。其中的字符串处理是Python编程中不可或缺的技术之一。本篇博客将介绍Python字符串的基本概念,包括字符串的定义、索引和切片操作。我们将深入探讨字符串的常用方法,如查找、替换、拆分和连接。

通过本篇博客,我们将一同探索Python字符串的奥秘,解密其在Python编程中的秘密武器地位。让我们一起开启这段精彩的Python字符串之旅吧!🚗🚗🚗

什么是 python 字符串

在 python 中,字符串是指用 ’ ’ 、" “、‘’’ ‘’'、”“” “”" 包含起来的所有字符。

message = '我爱python'
print(type(message))

在这里插入图片描述

message = "我爱python"
print(type(message))

在这里插入图片描述

message = '''我爱python'''
print(type(message))

在这里插入图片描述
不仅如此,当我们使用三引号作为字符串标志的时候,我们可以使用回车键将字符串分割,使之还是一个字符串,并且我们打印这个字符串的时候,字符串中也会出现换行。

message = '''我爱
python'''
print(message)
print(type(message))

在这里插入图片描述
但是单引号就不能达到三引号字符串这种效果。当我们在单引号字符串之间敲回车键的时候,我们会发现,字符串会被自动分割成两对引号之间使用 \ 连接的字符串,并且打印的时候不会出现换行。

message = '我爱' \
          'python'
print(message)
print(type(message))

在这里插入图片描述
当我们的字符串中的内容也含有引号时,我们需要做出相应的操作来进行区别。

在这里插入图片描述

message = '我爱\'python\''
message = "我爱'python'"

通过下标(索引)来访问字符串中的字符

字符串序列[n]
这里的下标(索引)是从0开始的。

message = 'I love python'
print(message[0])
print(message[1])
print(message[3])

在这里插入图片描述
下标(索引)值不能大于字符串长度-1

message = 'I love python'
print(len(message))  # len() 用来获取字符串长度 13
print(message[13])

在这里插入图片描述

字符串的切片操作

切⽚是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。

字符串序列[开始位置下标 : 结束位置下标 : 步长]

注意:

  1. 不包括结束位置下标对应的数据,正负整数都可以。
  2. 步长是选取间隔,正负整数均可,默认步长为1。
message = 'abcdef'
print(message[0:4:1])  # abcd

在这里插入图片描述

message = 'abcdef'
print(message[0:4:2])

在这里插入图片描述

1)当省略开始位置的下标时,默认从0下标处开始

message = 'abcdef'
print(message[:4:1])

在这里插入图片描述
2)当省略结束位置的下标时,默认到最后一个字符结束

message = 'abcdef'
print(message[0::1])

在这里插入图片描述
3)当开始位置下标和结束位置下标都省略时,表示从0下标开始到字符串的结尾

message = 'abcdef'
print(message[::1])

在这里插入图片描述

4)当省略步长的时候,默认步长为1

message = 'abcdef'
print(message[0:4:])

在这里插入图片描述
5)当步长为负数时,表明是从字符串的尾部开始到字符串的开头的方向

message = 'abcdef'
print(message[4:0:-1])

在这里插入图片描述
那么有人会问了,我可以将开始位置和结束位置调换一下吗?答案是不可以的,为什么呢?因为 步长的方向需要跟开始位置到结束位置的方向相同。

message = 'abcdef'
print(message[0:4:-1])

在这里插入图片描述
在这里开始位置到结束位置的方向是从字符串开头到结尾的,而步长为负数,则表明步长方向是从字符串尾部到字符串开头的,两者方向不相同。

6)当开始位置或者结束位置为负整数时,表示从字符串尾部开始
-1索引表示字符串的最后一个字符,-2表示倒数第二个字符

message = 'abcdef'
print(message[-1])
print(message[-2])

在这里插入图片描述

message = 'abcdef'
print(message[-4:-1:1])

在这里插入图片描述
那么这种时候,步长可以为负数吗?我们来看看。

message = 'abcdef'
print(message[-4:-1:-1])

在这里插入图片描述
7)当都省略的时候,则会把字符串从前往后打印一遍

message = 'abcdef'
print(message[::])

在这里插入图片描述

字符串常用的方法

find() 查找子串

字符串序列.find(子串,开始位置下标,结束位置下标)

从字符串开始位置开始,到结束位置结束,查找是否有指定的子串,如果有就返回第一个子串第一个字符出现的位置的下标,没有则返回-1。不包括结束位置的下标。

message = 'I love python'
print(len(message))
print(message.find('python',2,12))

在这里插入图片描述

message = 'I love python'
print(len(message))
print(message.find('python',2,13))

在这里插入图片描述
如果省略开始位置下标,则表明从0下标处开始;如果省略结束位置下标,则表明到字符串末尾结束(包括最后一个字符);都省略,则表明在整个字符串中查找。

index() 查找子串

字符串序列.index(子串,开始位置下标,结束位置下标)

index() 方法跟 find() 方法的使用基本相同,只是当字符串中没有找到子串的时候会报错。

message = 'I love python'
print(message.index('Java'))

在这里插入图片描述

rfind() / rindex()

这里表明从字符串的右边向左边查找,其他的方法是一样的。

count() 返回某个子串在字符串中出现的次数

字符串序列.count(子串,开始位置下标,结束位置下标)

count() 方法表明从开始位置开始到结束位置结束,看子串在字符串中出现的次数,如果没有则返回0。

message = 'A man who is handsome said that I am a handsome man'
print(message.count('handsome'))

在这里插入图片描述

message = 'A man who is handsome said that I am a handsome man'
print(message.count('handsome',18))

在这里插入图片描述

replace() 替换

字符串序列.replace(旧子串,新子串,替换次数)

replace() 方法是指将字符串中 n 个旧子串替换成新子串

message = 'A man who is handsome said that I am a handsome man'
print(message.replace('man','woman',1))
print(message.replace('man','woman',2))

在这里插入图片描述
当我们修改完成之后,我们再打印原字符串可以发现,原字符串并没有被修改。

message = 'A man who is handsome said that I am a handsome man'
print(message.replace('man','woman',1))
print(message.replace('man','woman',2))
print(message)

在这里插入图片描述
这说明在 python 中,字符串是不可变的数据类型。

split() 按照指定字符分割字符串

字符串序列.split(分割字符,num)

split() 方法是指将字符串以 num 个分割符号,分割成 num + 1 部分,返回一个列表类型的数据。并且分割后,该分割字符会消失。

message = 'A man who is handsome said that I am a handsome man'
print(message.split('handsome',1))
print(message.split('handsome',2))
print(type(message.split('handsome',1)))

在这里插入图片描述

join() 用一个字符或者子串合并含有多个字符串的序列

字符或者子串.join(多字符串组成的序列)
message = ['我','爱','中国']
print('哈哈'.join(message))

在这里插入图片描述

message = ['我','爱','中国']
print(''.join(message))

在这里插入图片描述

capitalize() 将字符串的第一个字符大写,其余的字符小写

字符串序列.capitalize()
message = 'i love python'
print(message.capitalize())

在这里插入图片描述

title() 将字符串每个单词的首字母大写

字符串序列.title()
message = 'i love python'
print(message.title())

在这里插入图片描述

lower() 将字符串中的字符都转换为小写

字符串序列.lower()
message = 'I love Python'
print(message.lower())

在这里插入图片描述

upper() 将字符串中的字符都转换为大写

字符串序列.upper()
message = 'I love Python'
print(message.upper())

在这里插入图片描述

lstrip() 删除字符串左边部分多余的空白

字符串序列.lstrip()
message = '    I love python    '
print(message.lstrip())

在这里插入图片描述

rstrip() 删除字符串右边部分多余的空白

字符串序列.rstrip()
message = '    I love python    '
print(message.rstrip())

在这里插入图片描述

strip() 删除字符串左边部分和右边部分多余的空白

字符串序列.strip()
message = '    I love python    '
print(message.strip())

在这里插入图片描述

ljust() 左对齐

字符串序列.ljust(长度,填充字符)
message = 'I love python'
print(message.ljust(20,'。'))

在这里插入图片描述

rjust() 右对齐

字符串序列.rjust(长度,填充字符)
message = 'I love python'
print(message.rjust(20,'。'))

在这里插入图片描述

center() 居中对齐

字符串序列.center(长度,填充字符)
message = 'I love python'
print(message.center(20,'。'))

在这里插入图片描述
这里居中是尽可能居中,不可能做到完全居中。

startswith() 判断字符串是否是以某子串开头

字符串序列.startswith(子串,开始位置下标,结束位置下标)
message = 'I love python'
print(message.startswith("I"))
print(message.startswith("love"))

在这里插入图片描述

endswith() 判断字符串是否以某一字串结束

字符串序列.endswith(子串,开始位置下标,结束位置下标)
message = 'I love python'
print(message.endswith('python'))
print(message.endswith('python',9,13))

在这里插入图片描述

isalpha() 判断字符串是否只包含字母

字符串序列.isalpha()
message = 'I love python'
print(message.isalpha())

在这里插入图片描述

注意空格不算字母

message = 'abcdef'
print(message.isalpha())

在这里插入图片描述

isdigit() 判断字符串是否只包含数字

字符串序列.isdigit()
message = '12345'
print(message.isdigit())

在这里插入图片描述

isalnum() 判断字符串是否只包含字母、数字、数字字母组合

字符串序列.isalnum()
message = 'abcdef1234'
print(message.isalnum())

在这里插入图片描述

message = 'abcdef'
print(message.isalnum())

在这里插入图片描述

isspace() 判断字符串是否只有空格

字符串序列.isspace()
message = '      '
print(message.isspace())

在这里插入图片描述

总结

希望文章能够对大家有所帮助,如有错误,欢迎指正,也欢迎大家订阅我的python学习专栏🌹🌹🌹

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

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

相关文章

Debian 12 静态IP / 固定IP的设置

环境:Debian 12 amd64-lxde 局域网:PT925E电信光猫 手机APP 网络管家 一般用动态IP就可以了,但如果软件环境比较小众,问题就随之而来。起始问题:路由器无法解析设备名和IP,网络管家也不让设置固定IP&…

炫酷水球图:让数据可视化更生动有趣

水球图是一种独特而引人注目的数据可视化形式,通过模拟水球的形状和大小来展示数据的分布和比例关系。它以其生动的表现形式和直观的视觉效果,吸引了越来越多的关注和应用。在数据可视化领域,水球图为我们提供了一种直观、易于理解的方式来展…

实施供应商管理时常见的挑战及解决方案

供应商管理在现代商业环境中是很重要的,是企业在采购活动中的重要组成部分。采购组织必须确保其供应商得到妥善管理,以维持成功的工作关系。然而,管理好供应商是一项艰巨且具有挑战性的任务。 以下是采购组织常面临的挑战以及有效的解决方案。…

SNMP 计算机网络管理 实验1(二) 练习与使用Wireshark抓取SNMP数据包抓包之 任务三分析并验证TCP三次握手建立连接时三次握手工作过程

⬜⬜⬜ 🐰🟧🟨🟩🟦🟪(*^▽^*)欢迎光临 🟧🟨🟩🟦🟪🐰⬜⬜⬜ ✏️write in front✏️ 📝个人主页:陈丹宇jmu &am…

您应该设置 Kubernetes CPU 限制吗?

管理Pod 和容器可用的资源是 Kubernetes 管理的最佳实践步骤。您需要防止 Pod 贪婪地消耗集群的 CPU 和内存。一组 Pod 的过度使用可能会导致资源争用,从而减慢相邻容器的速度并破坏主机的稳定性。 但 Kubernetes 资源管理经常被误解。提供了两种机制来控制分配:请求和限制。…

打jar包

pom文件指定打包的类型是jar&#xff0c;并指定启动主类 <packaging>jar</packaging><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-jar-plugin</artifactId><version>…

django要在books接口中不同数据的新类

要在books接口中添加一个处理不同数据的新类&#xff0c;并希望通过 Django 管理后台添加和显示这些数据&#xff0c;需要对三个文件进行修改 1.在 models.py 文件中添加新的模型类。 例如&#xff0c;假设您要添加一个名为 Category 的新模型&#xff1a; from django.db i…

Mac菜单栏图标管理软件 Bartender 4

Bartender 4是一款用于管理 macOS 系统状态栏图标的软件。它允许你自定义状态栏图标的显示和排序&#xff0c;帮助你更好地组织和管理你在状态栏中使用的应用程序和工具。 通过 Bartender 4&#xff0c;你可以隐藏或显示状态栏图标&#xff0c;以避免状态栏过多的图标拥挤在一起…

dbeaver远程数据库连接管理工具使用,数据库拒绝访问,用python远程访问postgre数据库

dbeaver软件 安装postgresql sudo apt-get update sudo apt-get install postgresql postgresql-client 修改postgresql密码,创建数据库 psql -U postgres ALTER USER postgres WITH PASSWORD new_password; CREATE DATABASE DB_NAME; \q 允许数据库被远程访问 点insert,加…

解决VS2013 C#无法联网搜索NuGet程序包的问题

1问题描述 2 结果办法 先打开程序包管理控制台 在程序包控制台输入后按回车&#xff1a;[Net.ServicePointManager]::SecurityProtocol[Net.ServicePointManager]::SecurityProtocol-bOR [Net.SecurityProtocolType]::Tls12 完成

7.1.6 Linux 文件系统的运行

所有的数据都得要载入到内存后CPU才能够对该数据进行处理。为了解决耗时等待磁盘的写入/读取上的问题&#xff0c;Linux使用的方式是通过一个称为非同步处理&#xff08;asynchronously&#xff09; 的方式。所谓的非同步处理是这样的&#xff1a; 当系统载入一个文件到内存后…

SAP ABAP结构复用的两种数据结构

一、定义结构中嵌套一层结构&#xff1a; 断点内表看结构是这样的&#xff1a; 二、定义结构中字段都放平层&#xff0c;注意那个include关键字的颜色&#xff0c;要变蓝色&#xff1a; 断点看内表结构&#xff0c;对了&#xff0c;就是我们想要的一层&#xff1a;

Oracle 查询下载补丁集

想必许多朋友在打开oracle支持网站后有些懵不知道如何查询下载数据库的补丁。 登入 登入Oracle support网站&#xff1a; https://support.oracle.com/portal/ 查询文档编号&#xff1a;2118136.2 选择需要的补丁编号&#xff1a; 选择对应的版本&#xff1a; 提前阅读…

java项目之疫情期间医院门诊管理系统ssm源码+文档

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的疫情期间医院门诊管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

java fastdfs实现文件(图片)的上传下载

1、首先引入依赖、目录结构&#xff1a; <!--fastdfs--> <dependency><groupId>com.github.tobato</groupId><artifactId>fastdfs-client</artifactId><version>1.26.5</version> </dependency>2、在application.yml中…

redis与分布式

主从复制 概念 主从复制&#xff0c;是指将一台Redis服务器的数据&#xff0c;复制到其他的Redis服务器。前者称为主节点(Master)&#xff0c;后者称为从节点(Slave)&#xff0c;数据的复制是单向的&#xff0c;只能由主节点到从节点。Master以写为主&#xff0c;Slave 以读为…

kong-dashboard安装

简介 kong-dashboard提供了UI界面操作和查看kong&#xff0c;可以进行api、consumers、plugins操作 官网&#xff1a;https://hub.docker.com/r/pgbi/kong-dashboard/ 安装 联网安装 [slviewDEMO:~]$ docker search kong-dashboard INDEX NAME …

终端安全管理系统(软件)能干什么?

随着企业网络化的进程&#xff0c;大多数企业已经开始通过终端安全管理系统来改善企业的网络环境&#xff0c;管控员工的上网行为&#xff0c;但同时还有很多企业不了解其具体的用处&#xff0c;那终端安全管理系统究竟可以干什么呢&#xff1f; 一、加密重要文档&#xff0c;保…

概率DP求期望

[NOIP2016 提高组] 换教室 链接&#xff1a;https://www.luogu.com.cn/problem/P1850 题目描述 对于刚上大学的牛牛来说&#xff0c;他面临的第一个问题是如何根据实际情况申请合适的课程。 在可以选择的课程中&#xff0c;有 2 n 2n 2n 节课程安排在 n n n 个时间段上。…

D352周赛复盘:重点是双指针滑动窗口+质数判断

文章目录 6909.最长奇偶子数组&#xff08;双指针&#xff09;思路完整版 6916.和等于目标的质数对&#xff08;质数判断&#xff0c;重要&#xff09;思路质数判断&#xff1a;埃拉托斯特尼筛法获取所有小于等于n的质数质数定义 完整版为什么只遍历到n/2&#xff1f; 时间复杂…