python数据结构之字符串

news2025/1/16 5:34:39

一、字符串的格式化输出

1.1、格式化运算符
print("我跑完了第" + str(lap + 1) + "圈")

上面这段输出的代码使用了两个加号做了字符串拼接,并且将整形转换成了字符串。也可以使用一种更好的办法,格式化输出来打印这句话。

print("我跑完了第%d圈" % 1)

这里的百分号就是格式化符号,跟模运算符一样,但在不同的地方用法不一样。%d是一种占位,表示要显示在这里是一个整数

常用的占位符有以下几种

占位符描述
%d整数占位符
%f浮点数占位符
%.f指定精度的浮点数占位符
%s字符串占位符
%%输出百分号%

如果给%d 传入一个浮点数,那它会自动将它转换成整数

print("%d" % 3.14) # 输出3
print("%d" % 3.99) # 输出3

转换成整数的规则和类型转换的规则一 样,不会四舍五入。

%f的用法有两种,一种就是直接使用,比如

print("%f" % 3.14) # 输出3.140000,后面的0是自动补齐的
## 如果我们只想要输出小数点后两位
print("%.2f" % 3.14)
print("%.2f" % 3.1415926)

即使浮点数后面的小数部 分超出了2位,也只会输出两位。如果不足两位,或者是个整数,会自动补零到两位

print("%.2f" % 3) # 3.00
print("%.2f" % 3.1) # 3.10

%s 是胜任最广泛的占位符,它可以对应任何类型的变量

print("%s" % 100) # 输出100
print("%s" % 3.14) # 输出3.14
print("%s" % "python") # 输出python

在同一个字符串可以同时使用多个占位符:

report = "%d年%s公司营收增长了百分之%.2f" % (2019, "腾讯", 20.28)
print(report)

在这里插入图片描述

1.2 format函数

除了%运算符外,Python还为我们提供了字符串的format函数提供丰富的格式化

如说,在输出一个 较长的数字时,根据国际惯例,每三位用逗号分隔

'{:,}'.format(1234567890)
# 1,234,567,890

format函数也可以像%那样来格式化多个参数

report = "{0}年{1}公司营收增长了{2}%".format(2019, "腾讯", 20.28)
print(report)

在这里插入图片描述

{0}表示第一个参数,{1}{2}表示第二、第三个参数,以此类推。这样做的好处是,如果有参数在字符串出现多次,可以不用重复的传入

二、字符串的下标和切片

字符串其实也是一种序列,可以理解为一串整齐的按顺序排着队的字符,组成了字符串,那每个字符在队伍中都有自己的位置,这个位置就是下标,又叫作索引。

比如,CHINA"这个字符串,从左往右每一个字符对应了一个下标(索引),需要特别注意的是,在 计算机编程中,所有的下标都是从0开始的,当我们要访问一个字符串的第1个字符时,使用的下标应该是0。

在这里插入图片描述

使用中括号加数字的方式,表示要访问的是具体哪个位置上的字符

"CHINA"[1] # 第2个字符"H"
"CHINA"[4] # 第5个字符"A"

第5个字符"A"是这个字符串的最后一个,我们也可以这样来访问

"CHINA"[-1] # 最后一个字符"A"

使用负数下标可以从右往左访问,这种写法是Python特有的,非常的快捷,对于任意长度的字符串,我们都可以使用-1来获取它的最后一个字符,注意使用负数下标是是从-1开始的,因为-0也是0,产生重复了。

在这里插入图片描述

切片操作也是Python的一大特色,极大简化了序列访问和操作

在这里插入图片描述
在这里插入图片描述

那如果想得到切片出整个字符串,可以有多种写法

"CHINA"[0:6] # CHINA
"CHINA"[0:] # CHINA
"CHINA"[:] # CHINA
## 事实上,前面的0也可以不写,冒号左边为空表示从第一个字符开始截取。

如果想要隔一个字符取一个,可以这样写

# 每隔两个字符截取一个
"CHINA"[::2] # CIA

第二个冒号表示截取步长,这里的2表示每两个字符取一个,如果不传,默认就是每一个都取。步长也可以为负数,如果传递了一个负数,则表示是从右往左进行截取

三、字符串函数

3.1 去除空白字符函数

所谓的空白字符,其实就是空格、换行(\n)、制表符(\t)等等一些看不见的特殊字符

print("A\tB\tC\nD\tE\tF")

在这里插入图片描述

很多时候做判断的时候我们的字符带有空白字符那是会判断失败的

password = "123"
input_password = " 123"
print(password == input_password)

print输出为False,由于在1前面有一个空格,导致了密码校验失败,所以必须对用户的输入先进行处理

password = "123"
input_password = " 123"
print(password == input_password.strip())

在这里插入图片描述

我们在input_password后面加了一个函数strip(),现在输出变成了True。strip函数的作用就是去除字符 串首尾的所有空白字符

另外还有 lstrip 和 rstrip 函数,分别去除字符串左边和右边的空白字符

" abc ".lstrip() # 结果'abc '
" abc ".rstrip() # 结果' abc'
3.2 大小写操作
# 将所有字符变成大写
"china".upper() # CHINA
# 将字符串的首字母变成大写
"china".capitalize() # China
# 将所有字符变成小写
"CHINA".lower() # china
# 将每个单词的首字母变成大写
"i have a dream".title() # I Have A Dream
1.3.3 字符串判断

判断字符串是否以指定的字符串开头或者结尾

函数说明
startswith是否以指定的字符串开头
endswith是否以指定的字符串结尾
isdigit是否是一串数字
islower是否全是小写字母
isupper是否全是大写字母
3.4 查找与替换

查找与替换 我们可以使用find()函数

password = '123'
input_pwd = '456123789'
password in input_pwd # True

上面代码我们使用in可以判断出input_pwd中是否有password,但如果想要知道password在input_pwd中的确切位置,就需要使用find函数

input_pwd.find(password) # 结果是3

结果是3。在input_pwd中寻找password,找到了,且它的出现的位置是3,也就是第4个字符。如果没 有找到则会返回-1

除了find函数,index函数也有相同的功能,唯一的区别是 ,index函数如果没有找到相应的字符串就会报错

input_pwd.index(password) # 结果是3
# 这行代码将会在运行时报错
input_pwd.index("notexists")

count函数能够查找出指定的字符串一共出现了几次,如果没有出现,则返回0

"abba".count('a') # 2
'abba'.count('c') # 0

replace函数提供了替换字符串中某些部分的功能

"abba".replace('a', 'b') # 结果是'bbbb'
'apple banana'.replace('apple', 'orange')
# 结果是'orange banana'
3.5 字符串长度

字符串本身没有测量长度的函数,需要借助一个Python内置函数len。它不光可以测量字符串的长度,也可以测量其他所有有长度的对象

len("China") # 5
len("") # 0
len("a") # 1

r = range(10)
len(r) # 10
3.5 字符串长度

字符串本身没有测量长度的函数,需要借助一个Python内置函数len。它不光可以测量字符串的长度,也可以测量其他所有有长度的对象

len("China") # 5
len("") # 0
len("a") # 1

r = range(10)
len(r) # 10

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

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

相关文章

内存取证——基础知识(volatility内存取证)

目录 一、基本概念 二、运行内存镜像的获取 2.1 Windows内存镜像获取 2.1.1 Magnet RAM Capture获取内存镜像 2.1.2 AccessData FTK Imager软件获取内存镜像 2.1.3 DumpIt软件获取内存镜像 2.1.4 额外知识补充: 2.2 Linux\Mac OS 下内存镜像获取方法 三、内…

什么是云渲染?云渲染速度快吗?

近年来随着计算机技术的逐步发展,万物上‘’云‘’的趋势越发明显,一种基于云计算的SAAS服务平台——云渲染农场开始走入CG行业。而且云渲染农场(如Renderbus瑞云渲染)也在众多CG小伙伴的眼里成为了不可或缺的一部分。有人问云渲染…

[ docker相关知识 ] 删除 docker 拉取的容器 -- 解决删除镜像报错问题

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

CSS入门八、CSS3动画

零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…

三、Gradle使用

文章目录三、Gradle使用1 在 idea 中创建普通 java 工程2 在 idea 中创建 ssm 工程3 项目部署3.1 本地tomcat部署项目3.2 Gretty 部署项目3.3 具体使用4 Gradle 对测试支持4.1 默认测试目录及标准输出4.2 Junit 使用4.3 包含和排除特定测试【尚硅谷】Gradle教程-讲师&#xff1…

Blender 物理属性 (一)刚体

文章目录添加与去除刚体查看刚体效果刚体属性刚体设置碰撞表面响应添加与去除刚体 1 添加:物体模式选中一个物体,属性栏/物理属性(蓝色圆圈),选择刚体 2 去除:再次点击刚体按钮即可 查看刚体效果 1 点击…

SpringCloud系列(八)[docker 篇] - 关于 Docker 的一些介绍及架构

近几年 Docker 还是挺火的, 学习微服务也肯定要知道 Docker 的存在并最好掌握一些基本操作, 毕竟一些体量非常大的项目运行环境会比较复杂, 部署的时候难免会遇到某些问题, 如兼容性 / 生产环境有差异等问题… 本篇文章将以图文的形式对 Docker 进行介绍, 加深对 Docker 的印象…

S2B2b2C电商框架图

S2B2b2C电商框架图 以下是S2B2b2C系统的结构图和流程说明: 它是品牌商赋能门店流量,以用户为中心、提升用户体验的一种电商模式。 这个品牌商可以是工厂、连锁品牌、省代市代等商贸流通型企业,它可以一个或者多个仓库,甚至有自己…

文件恢复软件哪个最好用?5 款最佳照片文件恢复软件

丢失照片很常见,但恢复它们取决于您选择的方法或软件。找到最好的照片恢复软件来恢复永久删除的照片并不容易。在许多网页上,您可以找到一大堆照片恢复工具,无论它们的性能如何。这可能会造成很多混乱,不知道优先使用什么照片恢复…

Linux操作系统之线程创建

文章目录一、了解线程二、线程的创建一、了解线程 什么是线程? 线程是进程内部的一条执行路径或执行序列 二、线程的创建 pthread_creat() //创建线程 pthread_exit() //只退出当前线程 pthread_join() //等待线程结束/合并线程 第一类题目:1、首先…

Python玩人工智能:你的俯卧撑做对了吗?

1. 准备工作 1.1 安装Python3.8.x 1.2 安装PyCharm社区版 1.3 创建项目 1.4 安装项目使用工具包 1.1 下载安装Python3.8.x版本 首先我们的电脑上要安装Python3.8.x。Python 3.8.x : https://www.python.org/downlo... 1.2 下载安装PyCharm社区版 PyCharm: https://www.j…

远程办公与Web3内核高度匹配 将重塑全球劳动力市场格局?

在过去两年半的时间里,全球有45%的工作转为了远程办公模式,不过即使疫情好转,大城市的办公室入驻率仍低于疫情前50%的水平。 这表明,现在越来越多的人更喜欢远程工作的生活方式。“远程办公”从疫情期间的无奈选择,正在…

java基于ssm框架的企业人事管理系统企业工资考勤系统

简介 Java基于ssm开发的企业人事考勤工资系统,员工可以打卡、请假。系统根据员工的打卡情况自动计算工资(全勤、请假、旷工、加班、迟到、早退等计算出最终实发工资),员工还可以查看自己的考勤记录工资具体组成等。升级版加了部长…

jedis是什么,为什么是线程不安全的

常用的操作redis的客户端工具 jedis Jedis 是 Redis 官方推荐的 Java 连接开发工具,jedis非线程安全。 但是可以通过JedisPool连接池去管理实例,在多线程情况下让每个线程有自己独立的jedis实例,可变为线程安全。 Lettuce Lettuce 是基于…

嵌入式实时操作系统的设计与开发(七)

内存管理机制 内存管理就是把物理的存储资源用一定的规则和手段管理起来,以供给操作系统和应用程序使用。 主要的操作:内存的分配和内存的回收。 内存的利用率、分配回收的效率和稳定性成为了评价内存管理模块的主要依据。 内存分配又包括静态和动态两种…

Pinely Round 1 (Div. 1 + Div. 2) A. Two Permutations

来写一道*800的题,思路很简单,就是这道题我们应该怎么去严谨地思考Problem - 1761A - Codeforces思路:结论题的分类讨论一定要不重不漏一开始很容易想到,前缀和后缀不能有重合那么有重合部分就判No没有重合的情况:隔1个…

Linux常用命令——xz命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) xz POSIX 平台开发具有高压缩率的工具。 补充说明 xz命令XZ Utils 是为 POSIX 平台开发具有高压缩率的工具。它使用 LZMA2 压缩算法,生成的压缩文件比 POSIX 平台传统使用的 gzip、bzip2 生成的压缩…

多线程进阶(二)Callable接口,JUC下常见类使用及线程安全集合类

目录 前言: Callable接口 代码实现 JUC下常见类使用 ReentrantLock类 代码实现 信号量 代码实现 CountDownLatch类 代码实现 线程安全的集合类 多线程环境下使用ArrayList 多线程环境下使用队列 多线程环境下使用哈希表 小结: 前言&#…

图解24种经典k线图

相信不少国内的老股民心中都藏着一份经典的K线图图解,当中也许有6种、12种或24种能揭示行情方向转变的“K线脸谱”,借由它们的对行情的预知作用,股民度过一次又一次的熊牛更替。其实只要善于变通,它们同样适用于贵金属投资&#x…

再说多线程(一)

世界是并行!做过复杂项目的朋友一定遇到过并发的问题,无论是大项目如订票系统,还是小项目中的文件管理都会有并行需求。所以不同于上学时接触的大部分代码,实际的业务往往是为多人提供服务,必然天然的带有并发的需求。…