Python入门-基本数据类型-字符串类型及其操作

字符串类型存储的数据是字符串,字符串是一个由字符构成的序列。Python字符串是不可变的
不支持动态修改。本节将对字符串进行简单介绍,包括字符串的定义方式、格式化、索引、切片
拼接、重复和成员归属等。

1.字符串的定义方式

1.1单行字符串

单行字符串可以由一对单引号( ' )或双引号( " ) 作为边界来表示,单引号和双引号作用相同。
例如
"hello"
'hello'

双引号定义的字符串可以含有单引号,但是不能直接含有双引号。同理,单引号定义的字符串
也不能直接含有单引号。这是因为Python解释器会匹配先出现的一对引号,导致后面的内容无法处
理。错误做法示例如下。

'let's go'

此时代码块会出现错误高亮提示,运行时程序发生异常,异常类型为SyntaxError,表示语法错
误,异常信息如下。

  File "/root/Python_03/main.py", line 1'let's go'^
SyntaxError: invalid syntax

要解决这个问题,可以对字符串中的单引号、双引号等特殊字符进行转义处理,即在特殊字符
前面加上转义字符"\"。此时解释器不再将特殊字符视为字符串的语法标志,而是将其与转义字符视
为一个整体。具体示例如下。

'let\'s go'

常用转义字符表

转义字符说明转义字符说明
\(在行尾时)续行符\t横向制表符
\\反斜杠符\b退格
\'单引号\r回车
\"双引号\f换页
\n回车换行\a响铃

如果需要忽略字符串中的转义字符,则可以在字符串的前面添加r或者R。例如,要打印某个文
件的路径“C:\Windows\tracing”,其中“t”构成了一个转义字符,导致字符串输出格式不符合预期,
此时在字符串前加r或R即可忽略转义字符的原有作用。

在字符串前使用r或R。

print('C:\Windowstracing')      #转义字符起作用
print(r'C:\Windows\tracing')    #在字符串前加r

运行结果如下。

C:\Windows racing
C:\Windows\tracing

编程建议:字符串的定义可以选择单引号或双引号,建议在编程中统一使用其中一种。一般情况下,双引号在面对缩写和所有格时更加友好,例如,“Lets”或“Im”,无须变换引号形式或使用转义字符。如果字符串包含引号,应当优先使用另一种形式的引号来包含字符串,而非使用转义字符。

1.2多行字符串

多行字符串由一对三引号包含,可以是三单引号也可以是三双引号。三引号中包含的所有字符
都属于字符串内容,包括空格、换行等。三引号中可以包含单引号、双引号,无须转义,所有字
均以原始形态打印出来,所见即所得。

打印圣诞树。

print("""
"这是一个圣诞树"*********
************""")

运行结果如下

"这是一个圣诞树"*********
************

2.字符串格式化

字符串格式化是指预先制定一个带有空位的模板,然后根据需要对空位进行填充。例如,预先制定一个模板“一年的_学期我学习了_门课程”,然后在下面线的位置填充内容,可以用以下代码实现。

print("{}年的{}学期我学习了{}门课程".format(2022,"上",20))

输出结果如下。

2022年上学期我学习了20门课程

2.1 format()方法的基本用法

字符串 format() 方法的基本使用格式是:
模板字符串.format(参数列表)
模板字符串中有一系列用“{}”表示的空位,format0方法可以将以逗号间隔的参数列表按照对
应关系替换到这些空位上。如果“(}”中没有序号,则按照出现的顺序进行替换.
如果“{}”中指定了参数序号,则会按照序号对参数进行替换,参数从0开始编号.

 2.2 format()方法的格式处理

format()方法的模板字符串的空位中不仅可以填写参数序号,还可以有其他的格式处理形式,此
时空位的样式如下。

(参数序号:格式处理内容}

格式处理内容要按照以下顺序使用。
(1)填充:填充单个字符,不指定时用空格填充。
(2)对齐:“<”为左对齐,“>”为右对齐,“^”为居中对齐。
(3)符号:“+”表示在正数前加正号,负数前加负号;“-”表示正数不变,负数加负号;空格表示正数加空格,负数加负号。
(4)宽度:指定空位所占宽度。
(5)分隔符:用逗号“,”分隔数字的千位,适用于整数和浮点数。
(6)精度:用“.precision”指定浮点数的精度或字符串输出的最大长度,如“.5”
(7)类型:用于指定类型,如表所示。

类型说明
a对字符串类型格式化
b将整数输出为对应的二进制数
c将整数输出为对应的Unicodc字符
d将整数输出为对应的十进制数
o将整数输出为对应的八进制数
x或X将整数输出为对应的小写或大写的十六进制数
e或E将浮点数输出为e或E的指数形式
f将浮点数标准输出
%输出浮点数的百分比形式

格式化输出学生信息。

name ="张三"
studentId="202201"
#用-占位,宽度为10,姓名和学号居中
print("我叫{0:-^10},学号为(1:-^10}".format(name,studentId))

运行结果如下。

我叫----张三----,学号为--202201--

3.f字符串

Python 3.6提供了一种新的格式化字符串的方法——f-strings,即f字符串。f字符串的格式化处理与format()方法类似,但语法比其简洁。Python 3.6及以后的版本推荐使用f字符串进行字符串的格式化。f字符串用花括号“{}”表示被替换的字段。

f字符串的使用。

name ="张三"
studentId="202201"
print(f"我叫(name),学号为(studentId}")

运行结果如下。

我叫张三,学号为202201

4.字符串的索引与切片

字符串是一个不可变的字符序列,每个字符都有其编号,也称为索引。Python的索引从0开始递增,字符串的第1个字符的索引为0,第2个字符的索引为1,以此类推;索引也可以是负数,字符串的最后1个字符的索引为-1,倒数第2个字符的索引为-2,如图所示。、

studyhard
0123456789
-10-9-8-7-6-5-4-3-2-1

根据索引可以获取字符串中的字符,例如,获取“study hard”中的字符“h”,可以通过以下代码实现。

word = "study hard"
word [6]
word [-4]

Python提供了len()函数计算字符串的长度,语法格式如下。

len(string)

其中string为要进行长度计算的字符串。

计算字符串“study hard”的长度。

length = len("study hard")
print(length)

运行结果如下。

10

len()函数在计算字符串长度时,不区分字母、汉字、数字、标点和特殊字符等,例如,字符串“学习Python使我快乐!#¥”,用len0)函数计算其长度,“学”“p”“!”“#”等各占一位,字符串长度为15。

字符串切片是指从字符串中截取部分字符组成新的字符串,且不会使原字符串产生变化,其语
法格式如下。

sname[start :end :step]

参数说明

参数说明
sname字符串名称
start切片开始的位置(包括此位置),不指定时默认为0
end切片结束的位置(不包括此位置),不指定时默认为序列的长度
step切片的步长,不传值时默认为1,最后的冒号也可以省略

字符串的切片。

sname ="学习Python使我快乐"               #共12个字符
print("sname[:]:",sname[:])              #取到字符串所有字符
print("sname[3:8]:",sname[3:8])          #默认步长为1
print("sname[:8]:"sname[:8])             #默认从索引0开始,步长为1
print("sname[3:]: ",sname[3:])           #默认到字符串末尾,步长为1
print("sname[3:8:2]:",sname[3:8:2])      #设置步长为2
print("snamel:-4]:"sname[:-4])           #索引0到-4,不含-4
print("sname[-8:-3:2]:",sname[-8:-3:2])  #索引-8到-3,不含-3,步长为2
print("sname[8:3:-2]:"sname[8:3:-2])     #索引8到3,不含3,步长为-2

运行结果如下。

sname[:]:学习Python使我快乐
sname[3:8l:ython
sname[:8]:学习Python
sname[3:]:ython使我快乐
sname[3:8:2]:yhn
sname[:-4]:学习Python
sname[-8:-3:2]:to使
sname[8:3:-2]:使ot

5.字符串的拼接与重复

5.1.字符串拼接

使用“+”可以实现字符串拼接,将多个字符串连接起来并产生一个字符串对象。

name ="张三”
action ="吃了早饭"
print(name + action)

运行结果如下。

张三吃了早饭

这种机制只能用于字符串类型之间的拼接,否则就会发生异常。

例如.字符串类型与整型的拼接。

str1 ="我今天吃了"
num = 3
str2="碗饭"
print(strl +num + str2)

此时程序异常,异常类型为TypeError,表示类型错误,异常信息如下,

Traceback (most recent call last):File "c:\1000phone\test.py",line 4,in <module>print(strl +num + str2)
TypeError: can only concatenate str(not "int") to str

可以用str()函数和repr()函数解决此类问题。str(0函数和repr()函数是将对象转换为字符串类型的
种机制:str()函数会将对象转换为合理形式的字符串,以便用户理解;而repr()函数会创建一个字
串,用合法的Python表达式来表示对象,以供Python解释器读取。

str()函数及repr()函数的使用。

action ="Hi,1000phone"
print("str()函数处理后:"+str(action))
print("repr()函数处理后:"+repr(action))
strl="我今天吃了"
num =3
str2="碗饭"
print("用str()函数实现字符串拼接:"+str1+str(num)+ str2)

运行结果如下。

str()函数处理后:Hi,1000phone
repr()函数处理后:'Hi,1000phone'
用str()函数实现字符串拼接:我今天吃了3碗饭

针对字符串,Python语言提供了几个基本操作符

操作符描述
x + y
连接两个字符串 x y
x * n n * x
复制 n 次字符串 x
x in s
如果 x s 的子串,返回 True ,否则返回 False

5.2.重复字符串

使用“*”可以将字符串重复多次。

print("study"* 5)

运行结果如下。

studystudystudystudystudy

6.字符串的成员归属

字符串的成员归属需要用到成员运算符,成员运算符能够判断指定序列是否包含某个值。Python
的成员运算符包括in和not in,详细说明如下。

(1)in:如果在指定序列中找到值,返回True,否则返回False。
(2)not in:如果在指定序列中没有找到值,返回True,否则返回False.

査找字符串是否含有某字符。

sentence ="i want to eat meat"
print("e在sentence中:","e" in sentence)
print("e不在sentence中:","e" not in sentence)

运行结果如下。

e在sentence中:True
e不在sentence中: False

实例解析:恺撒密码

恺撒撒密码是古罗马恺撒大帝用来对军事情报进行加密 的算法,它采用了替换方法对信息中的每一个英文字符 循环替换为字母表序列该字符后面第三个字符:
原文: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

 

原文字符 P ,其密文字符 C 满足如下条件:
                C = ( P + 3 ) mod 26
解密方法反之,满足:
                P = ( C – 3 ) mod 26

1.恺撒密码-加密

恺撒密码的加密算法程序首先接收用户输入的文本,然 后对字母a-z 和字母 A-Z 按照密码算法进行转换。
ptxt = input("请输入明文文本: ")
for p in ptxt:if "a" <= p <= "z":print(chr(ord("a")+(ord(p)-ord("a")+3)%26), end='')
elif "A" <= p <= "Z":print(chr(ord("A")+(ord(p)-ord("A")+3)%26), end='')
else:print(p, end='')

运行结果如下。

请输入明文文本: This is an excellent Python book.
Wklv lv dq hafhoohqw Sbwkrq errn.

2.恺撒密码-加密

恺撒密码的解密算法程序首先接收用户输入的加密文本, 然后对字母a-z 和字母 A-Z 按照密码算法进行反向转换.
etxt = input("请输入加密后文本: ")
for p in etxt:if "a" <= p <= "z":print(chr(ord("a")+(ord(p)-ord("a")-3)%26), end='')
elif "A" <= p <= "Z":print(chr(ord("A")+(ord(p)-ord("A")-3)%26), end='')
else:print(p, end='')

运行结果如下。

请输入加密后文本: Wklv lv dq hafhoohqw Sbwkrq errn.
This is an excellent Python book.

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

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

相关文章

《概率论与数理统计》期末笔记_下

目录 第4章 随机变量的数字特征 4.1 数学期望 4.2 方差 4.3 常见分布的期望与方差 4.4 协方差与相关系教 第5章 大数定律和中心极限定理 5.1 大数定律 5.2 中心极限定理 第6章 样本与抽样分布 6.1 数理统汁的基本概念 6.2 抽样分布 6.2.1 卡方分布 6.2.2 t分布 6.…

高效利用iCloud的指南

高效利用iCloud的指南可以帮助你充分利用Apple提供的云服务&#xff0c;以下是一些关键的步骤和建议&#xff1a; 了解iCloud的基本功能 iCloud是Apple提供的云服务&#xff0c;可以安全地存储你的个人信息&#xff0c;包括照片、文件、备忘录、日历、联系人等。通过iCloud&…

JavaScript(4)——数组,常量

let和var的区别 var可以先使用再声明var声明过的变量可以重复声明 数组 声明语法&#xff1a; let 数组名 [数据1&#xff0c;数据2&#xff0c;数据3,...] 数组是按顺序保存&#xff0c;所以每个数据都有自己的编号计算机中的编号从0开始编号也叫索引或下标 数组可以存储任…

java基于ssm+jsp 高校毕业生就业满意度调查统计系统

1用户前台功能模块 高校毕业生就业满意度调查统计系统&#xff0c;在高校毕业生就业满意度调查统计系统可以查看首页、问卷、就业咨询、试卷列表、新闻资讯、留言反馈、我的、跳转到后台等内容&#xff0c;如图1所示。 图1系统首页界面图 用户登录、用户注册&#xff0c;通过…

LabVIEW代码性能优化

优化LabVIEW代码以提高软件性能是确保系统高效运行的关键。通过分析代码结构、数据管理、并行处理、内存使用和硬件资源的有效利用&#xff0c;我们可以从多个角度提升LabVIEW程序的执行速度和稳定性。 代码结构优化 模块化编程 将复杂的程序分解成多个子VI&#xff0c;每个子V…

Linux-进程间通信(IPC)

进程间通信&#xff08;IPC&#xff09;介绍 进程间通信&#xff08;IPC&#xff0c;InterProcess Communication&#xff09;是指在不同的进程之间传播或交换信息。IPC 的方式包括管道&#xff08;无名管道和命名管道&#xff09;、消息队列、信号量、共享内存、Socket、Stre…

纠正自己的做题习惯-认真学习理科第三天

自己的做题习惯有问题&#xff0c;自己得不断地纠正自己的做题习惯&#xff0c;自己经常题目都不看&#xff0c;就开始写题&#xff0c;结果就是自己没有办法能够良好地进行做题。 any()函数用于判断数组中是否存在满足条件的元素&#xff0c;而all&#xff08;&#xff09;函数…

LabVIEW编程控制ABB机械臂

使用LabVIEW编程控制ABB机械臂是一项复杂但十分有价值的任务。通过LabVIEW&#xff0c;可以实现对机械臂的精确控制和监控&#xff0c;提升自动化水平和操作效率。 1. 项目规划和硬件选型 1.1 确定系统需求 运动控制&#xff1a;确定机械臂需要执行的任务&#xff0c;如抓取、…

typescript定义函数的传参、返回值

Render 函数中定义函数传参 interface List {id: number;name: string; }interface Result {data: List[]; //表示由 List 接口组成的数组 }function Render(result: Result) {result.data.forEach(value > {console.log(value);}); }let result {data: [{id: 1,name: 张三…

嵌入式Linux系统编程 — 5.2 Linux系统时间与日期

目录 1 了解Linux系统时间 1.1 几种常用的时间 1.2 如何查看几种常用的时间 1.3 Linux 系统中的时间 2 time、gettimeofday获取时间 2.1 time函数 2.2 ​​​​​​​gettimeofday函数&#xff1a; 2.3 示例程序 3 时间转换函数 3.1 ctime与ctime_r函数 3.2 localti…

Unity之自定义Text组件默认属性值

内容将会持续更新&#xff0c;有错误的地方欢迎指正&#xff0c;谢谢! Unity之自定义Text组件默认属性值 TechX 坚持将创新的科技带给世界&#xff01; 拥有更好的学习体验 —— 不断努力&#xff0c;不断进步&#xff0c;不断探索 TechX —— 心探索、心进取&#xff01;…

普通集群与镜像集群配置

一. 环境准备 关闭防火墙和selinux&#xff0c;进行时间同步 rabbitmq-1 Rocky_linux9.4 192.168.226.22rabbitmq-2Rocky_linux9.4192.168.226.23rabbitmq-3Rocky_linux9.4192.168.226.24 修改主机名#192.168.226.22 hostnamectl set-hostname rabbitmq-1#192.168.226.22 ho…

isalpha()方法——判断字符串是否只由字母组成

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 语法参考 isalpha()方法用于判断字符串是否只由字母组成。isalpha()方法的格式如下&#xff1a; str.isalpha() 如果字符串中至少有一个字符并且所…

「C++系列」C++ 基本语法

文章目录 一、C 基本语法1. **预处理指令**2. **数据类型**3. **变量和常量**4. **运算符**5. **控制流语句**6. **函数**7. **数组**8. **指针和引用**9. **结构体和类**10. **输入/输出**11. **异常处理**12. **命名空间** 二、C 程序结构1. 程序流程结构2. 文件结构3. 编译预…

银河麒麟高级服务器操作系统V10SP2(X86)配置bond0的mac地址为指定子网卡的mac地址

银河麒麟高级服务器操作系统V10SP2&#xff08;X86&#xff09;配置bond0的mac地址为指定子网卡的mac地址 一 系统环境二 删除和备份原有配置2.1 down掉bond02.2 备份之前的bond配置到/root/bak2.3 删除bond配置&#xff08;网卡文件根据实际情况变化&#xff09; 三 新建bond0…

昇思25天学习打卡营第6天|MindSpore-ResNet50迁移学习

MindSpore-ResNet50迁移学习 迁移学习 图像的迁移学习是一种机器学习方法,它将已经在一个或多个源任务上训练好的预训练模型应用到新的目标任务上。这种方法的核心思想是,通过在大量数据上训练模型,学习到的特征表示可以用于其他相关任务,从而提高目标任务的性能。 应用场…

MySQL之聚簇索引和非聚簇索引

1、什么是聚簇索引和非聚簇索引&#xff1f; 聚簇索引&#xff0c;通常也叫聚集索引。 非聚簇索引&#xff0c;指的是二级索引。 下面看一下它们的含义&#xff1a; 1.1、聚集索引选取规则 如果存在主键&#xff0c;主键索引就是聚集索引。如果不存在主键&#xff0c;将使…

【Lua】第二篇:打印函数和注释

文章目录 一. 打印函数二. 注释方式1. 单行注释2. 多行注释 一. 打印函数 Lua 程序是以 .lua 结尾的文件&#xff0c;创建一个的 Test.lua 的文件&#xff0c;使用 print 函数输出字符串"Hello World"&#xff1a; print(Hello World) 保存之后使用命令lua 文件名编…

MyBatis(14)MyBatis 如何实现多对一和一对多的映射关系

MyBatis 中实现多对一和一对多的映射主要依赖于映射文件中的 <association> 和 <collection> 标签。这两种映射关系的实现&#xff0c;是通过嵌套查询或嵌套结果映射来完成的。在源码层面&#xff0c;MyBatis 使用相应的处理器来处理这些标签&#xff0c;最终实现复…

elasticsearch-6.8.23的集群搭建过程

三个节点的 ElasticSearch 集群搭建步骤 准备三台机器&#xff1a;28.104.87.98、28.104.87.100、28.104.87.101 和 ElasticSearch 的安装包 elasticsearch-6.8.23.tar.gz ----------------------------- 28.104.87.98&#xff0c;使用 root 用户操作 ----------------------…