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表达式。

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

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

相关文章

Python如何实现微信支付功能代码示例

微信支付是一种基于互联网的移动支付服务&#xff0c;由中国的即时通讯工具微信提供。用户可以通过微信支付在微信平台上进行在线支付、转账和收款。微信支付支持多种支付方式&#xff0c;包括银行卡支付、微信钱包余额支付、扫码支付等。用户可以用微信支付购买商品、支付账单…

C语言编译器(C语言编程软件)完全攻略(第二十一部分:Code::Blocks汉化教程(附带汉化包))

介绍常用C语言编译器的安装、配置和使用。 二十一、Code::Blocks汉化教程&#xff08;附带汉化包&#xff09; 由于官方下载的 CodeBlocks 全部都是英文版&#xff0c;本教程中给大家推荐的 CodeBlocks 17.12 版本也是官方英文版&#xff0c;所以本节给大家介绍&#xff1a;如…

C# .Net学习笔记—— 异步和多线程(await/async)

一、介绍 1、控制台测试await/async 2、C# 5.0 .Net framework4.5 CLR4.0 以后才有&#xff0c;本身是一种语法糖 二、基本测试 1、不加await测试。 private async static Task TestAsync() {Log.Info($"当前主线程id{Thread.CurrentThread.ManagedThreadId}"…

【六大排序详解】终篇 :冒泡排序 与 快速排序

终篇 :冒泡排序 与 快速排序 1 冒泡排序1.1 冒泡排序原理1.2 排序步骤1.3 代码实现 2 快速排序2.1 快速排序原理2.1.1 Hoare版本代码实现 2.1.2 hole版本代码实现 2.1.3 前后指针法代码实现 2.1.4 注意取中位数局部优化 2.1.5 非递归版本非递归原理代码实现 2.2 特性总结 谢谢阅…

负责任的人工智能与人机环境系统智能

负责任的人工智能是指在人工智能系统的设计、开发、管理、使用和维护过程中&#xff0c;所有相关的角色&#xff08;包括设计者、开发者、管理者、使用者、维护者等等&#xff09;都承担其行为的道义、法律和社会责任。这意味着这些角色需要确保人工智能系统的设计与使用符合伦…

网络安全B模块(笔记详解)- Web渗透测试

Web信息收集 1.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,查看该命令的完整帮助文件),并将该操作使用命令中固定不变的字符串作为Flag提交; Flag:nikto -H 2.通过Kali对服务器场景Linux进行Web扫描渗透测试(使用工具nikto,扫描目标服务器8080端口,…

阻止持久性攻击改善网络安全

MITRE ATT&CK框架是一个全球可访问的精选知识数据库&#xff0c;其中包含基于真实世界观察的已知网络攻击技术和策略。持久性是攻击者用来访问系统的众多网络攻击技术之一;在获得初始访问权限后&#xff0c;他们继续在很长一段时间内保持立足点&#xff0c;以窃取数据、修改…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑多元不确定性和备用需求的微电网双层鲁棒容量规划》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 这个标题涉及微电网&#xff08;Microgrid&#xff09;的双层鲁棒容量规划&#xff0c;考虑了多元不确定性和备用需求。让我们逐步解读这个标题&#xf…

【软考中级-软件设计师】day1:CPU、数据的表示、校验码

考点分布目录 中央处理单元CPU 练习题 数据的表示 二进制转十进制 练习题 十进制转二进制 练习题 原码 练习题 反码 练习题 补码 练习题 练习题 移码 浮点数 练习题 奇偶校验 练习题 校验码 模2除法 循环冗余校验CRC 练习题 练习题 练习题 奇偶校验码 只…

docker kingbase

docker kingbase run 命令 docker run -tid \ -e ENABLE_CIyes \ -e NEED_STARTyes \ -e DB_MODEoracle \ -e DB_USERkingbase \ -e DB_PASSWORD123456 \ --privileged \ -p 4321:54321 \ -v /home/admin/SoftWare/volume/kingbase/userdata/data:/home/kingbase/userdata/da…

基于seatunnel实现mysql同步clickhouse验证

场景&#xff1a; 需求想要实现mysql同步到clickhouse&#xff0c;seatunnel部署见前面文档linux环境seatunnel安装运行-CSDN博客。 官方说明文档 Clickhouse | Apache SeaTunnel mysql同步配置 server-id1 log_bin/var/lib/mysql/bin.log binlog_formatROW #binlog-do-db 具…

astadmin安装querylist插件Puppeteer

我本来是想在linux服务器上安装&#xff0c;折腾了一天也没安装成功&#xff0c;由于急着用&#xff0c;就先做window10上安装了&#xff0c;以后有时间再研究centos7上安装 一 首先需要安装fastadmin 框架和querylist插件 这个大家可以自行安装&#xff0c;querylist安装地址…

B059-权限管理系统01

目录 知识点介绍项目演示项目搭建动态菜单查询分析(权限表分析)权限系统表分析角色模块pageInfopageHelper实现前端动态分页高级查询新增与修改删除角色 分配权限-表分析角色授权数据-一级和二级权限查询 知识点介绍 项目演示 准备数据库 准备工程auth_new tips&#xff1a;…

三极管组成的光控开关电路原理图

什么是光控开关 光控开关/光控时控器采用先进的嵌入式微型计算机控制技术&#xff0c;融光控功能和普通时控器两大功能为一体的多功能高级时控器&#xff08;时控开关&#xff09;&#xff0c;根据节能需要可以将光控探头&#xff08;功能&#xff09;与时控功能同时启用&…

【QT 自研上位机 与 ESP32下位机联调>>>串口控制GPIO-基础样例-联合文章】

【QT 自研上位机 与 ESP32下位机联调&#xff1e;&#xff1e;&#xff1e;串口控制GPIO-基础样例-联合文章】 1、概述2、实验环境3、 自我总结4、 实验过程1、验证上位机QT程序1、下载样例代码2、修改qt程序3、运行测试验证 2、验证下位机ESP32程序1、下载样例代码2、更改ESP3…

RocketMQ源码 发送消息源码分析

前言 DefaultMQProducer 是默认生产者组件&#xff0c;是生产者客户端中&#xff0c;绝大部分关于生产者和broker、nameSrv进行网络通信的功能入口。其中&#xff0c;包含发送各种形式&#xff08;同步、异步、事务、顺序&#xff09;的消息&#xff0c;针对发送消息部分的实现…

第11章 GUI Page462~476 步骤二十三 步骤二十四 Undo/Redo ②“添加操作”支持“Undo/Redo”

工程二 1.为AddAction类添加Undo() Redo() GetName()成员函数 2.实现AddAction类的Undo() Redo()函数 3.运行效果&#xff0c;但是日志窗口没有记录 原因&#xff1a;AddAction(EditAction* newAction)函数没有实现&#xff0c;另外参数是EditAction类型 所以我们还需要在基…

基于PyTorch的Transformer组件实现

最近看了不少介绍LLM工作原理的文章&#xff0c;发现每一篇都会试图跟读者讲明白作为baseline的Transformer架构到底长啥样。但是好像比较少有代码实现的示例和具体的例子帮助理解。于是自己也想尝试着写一篇含有代码实现和具体例子解释的文章&#xff0c;希望能够给喜欢编程朋…

金蝶Apusic应用服务器 loadTree JNDI注入漏洞

产品介绍 金蝶Apusic是一款企业级应用服务器&#xff0c;支持Java EE技术&#xff0c;适用于各种商业环境。 漏洞概述 由于金蝶Apusic应用服务器权限验证不当&#xff0c;使用较低JDK版本&#xff0c;导致攻击者可以向loadTree接口执行JNDI注入&#xff0c;远程加载恶意类&a…

C++学习day--25 俄罗斯方块游戏图像化开发

项目分析 项目演示、项目分析 启动页面 启动页面&#xff1a; 分析&#xff1a; 开发环境搭建 1&#xff09;安装vc2010, 或其他vs版本 2&#xff09;安装easyX图形库 代码实现: # include <stdio.h> # include <graphics.h> void welcome(void) { initgraph(55…