Python基础知识总结2——python中的字符串

python字符串

  • 字符串基本特点
    • 空字符串和len()函数
    • 转义字符
    • 字符串拼接
    • 字符串复制
    • 不换行打印
    • 从控制台读取字符串
    • replace() 实现字符串替换
    • str()实现数字转型字符串
    • 使用[]提取字符
    • 字符串切片slice操作
    • split()分割和join()合并
    • 字符串驻留机制和字符串比较
    • 字符串比较和同一性
    • 成员操作符判断子字符串
  • 字符串常用方法汇总
    • 常用查找方法
    • 去除首尾信息
    • 大小写转换
    • 格式排版
    • 特征判断方法
  • 字符串的格式化
    • format() 基本用法
    • 填充与对齐
    • 数字格式化
  • 用支持插值的f-string取代C风格的格式字符串与str.format方法

字符串基本特点

在这里插入图片描述
1 字符串的本质是:字符序列。
2 Python不支持单字符类型,单字符也是作为一个字符串使用的。

⚠️Python的字符串是不可变的,我们无法对原字符串做任何修 改。但,可以将字符串的一部分复制到新创建的字符串,达到 “看起来修改”的效果

空字符串和len()函数

Python允许空字符串的存在,不包含任何字符且长度为0。例如:

c = ''
print(len(c)) #结果:0

len()用于计算字符串含有多少字符。例如:

d = 'abcdef'
len(d)   #结果:6

转义字符

我们可以使用 +特殊字符 ,实现某些难以用字符表示的效果。比如:换
行等。常见的转义字符有这些:
在这里插入图片描述

字符串拼接

可以使用 + 将多个字符串拼接起来。例如: ’aa’+ ’bb’ 结果
是 ’aabb’

  1. 如果 + 两边都是字符串,则拼接。
  2. 如果 + 两边都是数字,则加法运算
  3. 如果 + 两边类型不同,则抛出异常

可以将多个字面字符串直接放到一起实现拼接。例
如: ’aa’’bb’ 结果是 ’aabb’

a = 'sxt'+'gaoqi'   #结果是:'sxtgaoqi'
b = 'sxt''gaoqi'     #结果是:'sxtgaoqi'

字符串复制

使用*可以实现字符串复制a = 'Sxt'*3 #结果:'SxtSxtSxt'

不换行打印

我们前面调用print时,会自动打印一个换行符。有时,我们不想换
行,不想自动添加换行符。我们可以自己通过参数end = “任意字符
串”。实现末尾添加任何内容:

print("sxt",end=' ')
print("sxt",end='##')
print("sxt")

从控制台读取字符串

myname = input("请输入名字:")
print("您的名字是:"+myname)

replace() 实现字符串替换

在这里插入图片描述
字符串是“不可改变”的,我们通过[]可以获取字符串指定位置的字
符,但是我们不能改变字符串。我们尝试改变字符串中某个字符,
发现报错了

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a[3]='高'
Traceback (most recent call last):File "<pyshell#94>", line 1, in <module>a[3]='高'
TypeError: 'str' object does not support item
assignment

字符串不可改变。但是,我们确实有时候需要替换某些字符。这
时,只能通过创建新的字符串来实现。
整个过程中,实际上我们是创建了新的字符串对象,并指向了变量
a,而不是修改了以前的字符串。 内存图如下:
str()实现数字转型字符串
str()可以帮助我们将其他数据类型转换为字符串。例如:

>>> a = 'abcdefghijklmnopqrstuvwxyz'
>>> a
'abcdefghijklmnopqrstuvwxyz'
>>> a = a.replace('c','高')
'ab高defghijklmnopqrstuvwxyz'

整个过程中,实际上我们是创建了新的字符串对象,并指向了变量
a,而不是修改了以前的字符串。 内存图如下:
在这里插入图片描述

str()实现数字转型字符串

str()可以帮助我们将其他数据类型转换为字符串。例如:

a = str(5.20)     #结果是:a = ‘5.20’ 
b = str(3.14e2)   #结果是:b = ’314.0’ 
c = str(True)     #结果是:c = ‘True’

使用[]提取字符

字符串的本质就是字符序列,我们可以通过在字符串后面添加[],
在[]里面指定偏移量,可以提取该位置的单个字符。
1 正向搜索:
最左侧第一个字符,偏移量是0,第二个偏移量是1,以此类推。
直到len(str)-1为止。
2 反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此
类推,直到-len(str)为止。

字符串切片slice操作

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

split()分割和join()合并

split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列
表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表
符)。示例代码如下:

>>> a = "to be or not to be"
>>> a.split()
['to', 'be', 'or', 'not', 'to', 'be']
>>> a.split('be')
['to ', ' or not to ', '']

join()的作用和split()作用刚好相反,用于将一系列子字符串连接起
来。示例代码如下:


>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)'sxt*sxt100*sxt200'

拼接字符串要点:
使用字符串拼接符 + ,会生成新的字符串对象,因此不推荐使
用 + 来拼接字符串。推荐使用 join 函数,因为 join 函数在拼接字
符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一
次对象。

字符串驻留机制和字符串比较

字符串驻留:常量字符串只保留一份。

c = "dd#"
d = "dd#"
print(c is d)   #True

字符串比较和同一性

我们可以直接使用 == != 对字符串进行比较,是否含有相同的字符。

我们使用 is not is ,判断两个对象是否同一个对象。比较的是对象的
地址,即 id(obj1) 是否和 id(obj2) 相等。

成员操作符判断子字符串

in not in 关键字,判断某个字符(子字符串)是否存在于字符串中。

"ab" in "abcdefg"     #true

字符串常用方法汇总

在这里插入图片描述

常用查找方法

a='''我是高淇,我在北京尚学堂科技上班。我的儿子叫高洛
希,他6岁了。我是一个编程教育的普及者,希望影响6000万
学习编程的中国人。我儿子现在也开始学习编程,希望他18岁
的时候可以超过我'''

在这里插入图片描述

去除首尾信息

我们可以通过strip()去除字符串首尾指定信息。通过lstrip()去除字符
串左边指定信息,rstrip()去除字符串右边指定信息。

大小写转换

编程中关于字符串大小写转换的情况,经常遇到。我们将相关方法
汇总到这里。为了方便学习,先设定一个测试变量:

a = "gaoqi love programming, love SXT"

在这里插入图片描述

格式排版

center() 、 ljust() 、 rjust() 这三个函数用于对字符串实现排版。示例如
下:

>>> a="SXT"
>>> a.center(10,"*")
'***SXT****'
>>> a.center(10)
'   SXT   '
>>> a.ljust(10,"*")
'SXT*******'

特征判断方法

1 isalnum() 是否为字母或数字
2 isalpha() 检测字符串是否只由字母组成(含汉字)
3 isdigit() 检测字符串是否只由数字组成
4 isspace()检测是否为空白符
5 isupper() 是否为大写字母
6 islower() 是否为小写字母

字符串的格式化

format() 基本用法

基本语法是通过 {} 和 : 来代替以前的 % 。
format() 函数可以接受不限个数的参数,位置可以不按顺序。
可以通过{索引}/{参数名},直接映射参数值,实现对字符串的
格式化,非常方便。

>>> a = "名字是:{0},年龄是:{1}"
>>> a.format("高淇",18)
'名字是:高淇,年龄是:18'
>>> a.format("高希希",6)
'名字是:高希希,年龄是:6'
>>> b = "名字是:{0},年龄是{1}。{0}是个好小伙"
>>> b.format("高淇",18)
'名字是:高淇,年龄是18。高淇是个好小伙'
>>> c = "名字是{name},年龄是{age}"
>>> c.format(age=19,name='高淇')
'名字是高淇,年龄是19'

填充与对齐

填充常跟对齐一起使用
^ 、 < 、 > 分别是居中、左对齐、右对齐,后面带宽度 2
: 号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("高
淇","666")
'我是高淇,我喜欢数字**666***'

数字格式化

浮点数通过 f ,整数通过 d 进行需要的格式化。案例如下:

a = “我是{0},我的存款有{1:.2f}”
a.format(“高淇”,3888.234342)
‘我是高淇,我的存款有3888.23’

在这里插入图片描述

用支持插值的f-string取代C风格的格式字符串与str.format方法

Python 3.6添加了一种新的特性,叫作插值格式字符串(interpolated format string,简称f-string), 新语法特性要求在格式字符串的前面加字母f作为前缀,这跟字母b与字母r的用法类似,也就是分别表示字节形式的字符串与原始的(或者说未经转义的)字符串的前缀。
在这里插入图片描述
采用%操作符把值填充到C风格的格式字符串时会遇到许多问题,而且这种写法比较烦琐。str.format方法专门用一套迷你语言来定义它的格式说明符,这套语言给我们提供了一些有用的概念,但是在其他方面,这个方法还是存在与C风格的格式字符串一样的多种缺点,所以我们也应该避免使用它。f-string采用新的写法,将值填充到字符串之中,解决了C风格的格式字符串所带来的最大问题。f-string是个简洁而强大的机制,可以直接在格式说明符里嵌入任意Python表达式。

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

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

相关文章

如何使用 Python 解决网络抓取中的 reCAPTCHA 问题

在网络抓取的领域&#xff0c;开发人员经常面临 reCAPTCHA 的障碍。为了区分人类和自动化机器人&#xff0c;reCAPTCHA 可能会成为那些试图从网站提取数据的人的沉痛阻碍。然而&#xff0c;借助 Python 和像 Capsolver 这样的工具&#xff0c;可以绕过 reCAPTCHA 并继续抓取有价…

shell 获取主机IP 脚本中使用IP 打印出来IP

目录 查看ip查看网关只查看ens33过滤ip拿到网卡名字对内容进行切片获取第一网卡IP &#xff08;head -1 表示第一个网卡&#xff09;脚本中打印IP 查看ip ip a 查看网关 ip r只查看ens33 ip a show dev ens33过滤ip ip a | grep -oE [0-9]\.[0-9]\.[0-9]\.[0-9] 拿到网卡名…

SQL的联合主键

在SQL中&#xff0c;联合主键是指由多个列组成的主键。联合主键的作用是确保每一行数据的唯一性&#xff0c;即组合列的值必须唯一。可以使用以下语法定义联合主键&#xff1a; CREATE TABLE 表名 (列1 数据类型,列2 数据类型,列3 数据类型,...PRIMARY KEY (列1, 列2, 列3, ..…

扩展 apiserver 连接认证 ip, apiserver证书更新

本文来自我的博客地址 文章目录 问题场景:问题分析:问题解决:查看 apiserver 证书支持的 ip 或 host使用 openssl 生成证书:再次查看 apiserver 证书支持的 ip 或 host 再次尝试将 master 加点加入参考 问题场景: k8s 1.28.1 集群后期新增 vip apiserver 证书不支持 vip 引入…

图像分割实战-系列教程11:U2NET显著性检测实战3

&#x1f341;&#x1f341;&#x1f341;图像分割实战-系列教程 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 U2NET显著性检测实战1 U2NET显著性检测实战2 U2NET显著性检测实战3 6、上采样操作与REBNCONV def…

JS/JQ实现小程序/H5验证码页面

话不多说&#xff0c;先上效果图 核心代码 1、html/css关键代码 <div class"obtain-verification-code"><div class"obtain-verification-code-input-content"><input id"input-0" class"verification-code-input" m…

Spring Data Jpa 使用EntityManager执行SQL操作数据

使用EntityManager执行原生SQL语句可以通过createNativeQuery方法实现。以下是一个简单的例子&#xff0c;演示如何使用EntityManager执行SQL语句进行数据库操作。 import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.trans…

Java学习笔记(四)——正则表达式

文章目录 正则表达式基本规则字符类(只匹配一个字符)预定义字符(只匹配一个字符)数量词练习正则表达式插件 爬虫利用正则表达式获取想要的内容爬取网络信息练习有条件的爬取贪婪爬取非贪婪爬取正则表达式在字符串中的使用 分组捕获分组正则表达式外部使用非捕获分组正则表达式忽…

MobaXterm SSH 免密登录配置

文章目录 1.简介2.SSH 免密登录配置第一步&#xff1a;点击 Session第二步&#xff1a;选择 SSH第三步&#xff1a;输入服务器地址与用户名第四步&#xff1a;设置会话名称第五步&#xff1a;点击 OK 并输入密码 3.密码管理4.小结参考文献 1.简介 MobaXterm 是一个功能强大的终…

智能座舱的下一个价值“爆点”——让“光”更智能

汽车智能化快速升级&#xff0c;智能座舱作为人机交互的主要窗口&#xff0c;交互模态、用户体验也呈现多维度升级。 例如&#xff0c;今年下半年上市的多款高端智能车型纷纷基于高性能座舱硬件平台&#xff0c;集成了AR-HUD、DMS/OMS等高阶功能&#xff0c;同时结合超大屏/多…

Transformer 的双向编码器表示 (BERT)

一、说明 本文介绍语言句法中&#xff0c;最可能的单词填空在self-attention的表现形式&#xff0c;以及内部原理的介绍。 二、关于本文概述 在我之前的博客中&#xff0c;我们研究了关于生成式预训练 Transformer 的完整概述&#xff0c;关于生成式预训练 Transformer (GPT) 的…

VMware ESXI 8 安装ipmitool 调整戴尔服务器风扇转速

本文内容适合ESXI 8版本安装ipmitool &#xff0c;进行管理&#xff0c;已知的是8.0以上版本无法安装社区的vib.所以需要自己编译文件&#xff0c;7.0及之前的版本可以安装vib版本的ipmtools。 一、编译好的适用于esxi8的ipmitool下载 ipmitool下载 二、安装ipmitool 1、开…

基于spark的Hive2Pg数据同步组件

一、背景 Hive中的数据需要同步到pg供在线使用&#xff0c;通常sqoop具有数据同步的功能&#xff0c;但是sqoop具有一定的问题&#xff0c;比如对数据的切分碰到数据字段存在异常的情况下&#xff0c;数据字段的空值率高、数据字段重复太多&#xff0c;影响sqoop的分区策略&…

软件工程:数据流图相关知识和多实例分析

目录 一、数据流图相关知识 1. 基本介绍 2. 常用符号 3. 附加符号 二、数据流图实例分析 1. 活期存取款业务处理系统 2. 工资计算系统 3. 商业自动化系统 4. 学校人事管理系统 5. 教材征订系统 6. 高考录取统分子系统 7. 订货系统 8. 培训中心管理系统 9. 考务处…

​已解决java.lang.ArrayIndexOutOfBoundsException异常的正确解决方法,亲测有效!!!​

已解决java.lang.ArrayIndexOutOfBoundsException异常的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 报错问题 解决思路 解决方法 总结 Q1 - 报错问题 java.long.ArrayIndexOutOfBoundsException 是Java中的一个运行时异常​&#xff0c…

强化学习5——动态规划初探

动态规划具体指的是在某些复杂问题中&#xff0c;将问题转化为若干个子问题&#xff0c;并在求解每个子问题的过程中保存已经求解的结果&#xff0c;以便后续使用。实际上动态规划更像是一种通用的思路&#xff0c;而不是具体某个算法。 在强化学习中&#xff0c;被用于求解值函…

【网络工程师】交换机的配置

一、交换机5大基本工作模式 配置网络设备&#xff0c;需要使用console线&#xff0c;在PC上需要使用软件 “超级终端” 1、用户模式&#xff1a;switch> 可以查看交换机的额基本简单信息&#xff0c;且不能做任何修改配置&#xff01; 2、特权模式&#xff1a;switch## …

在使用Composer管理的项目中安装和使用

在使用Composer管理的项目中安装 如果项目框架本身就是使用Composer来管理包的话&#xff0c;直接在项目根目录执行Composer安装命令后&#xff0c;即可在项目控制器中调用QueryList来使用&#xff0c;这种框架有&#xff1a; Laravel、ThinkPHP5等。 在项目根目录执行compo…

SQL日期列更新操作详解

在实际的数据库管理过程中&#xff0c;有时我们需要对数据库中的日期列进行更新。这篇博客将详细介绍一条 SQL 语句&#xff0c;该语句用于更新 referral_up_order 表中的多个日期列&#xff0c;并将它们的日期部分更改为 2023-10-24&#xff0c;同时保留原始时间部分。 1、背…

LeGO-LOAM 几个特有函数的分析(2)

接上回LeGO-LOAM 几个特有函数的分析&#xff08;1&#xff09; 二、广度优先遍历 广度优先遍历&#xff08;Breadth-First Search, BFS&#xff09;是一种用于遍历或搜索树或图的算法。这种算法从树的根&#xff08;或图的某一指定节点&#xff09;开始&#xff0c;然后探索…