Python学习——字符串

news2024/11/16 7:23:45

一、字符串
字符串也是基本数据类型,是一个不可变的字符序列,字符串可以用单引号,双引号,三引号进行定义。
字符串的驻留机制,简而言之,就是相同的字符串只保留一个,后续创建相同字符串的时候,id不变,也就说没有分配新的内存空间。

a='python'
b="python"
c='''python'''

print(a,id(a))
print(b,id(b))
print(c,id(c))

运行结果
在这里插入图片描述
由运行结果可知,创建与之前相同的字符串并没有分配新的内存空间。
二、字符串的查询
(1)index(),查找子串第一次出现的位置,如果找不到,就报错ValueError。

#字符串的查找操作
s='python,python'
print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))
#
print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
在这里插入图片描述
(2)rindex(),查找子串最后一次出现的位置,如果找不到,就报错ValueError。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
print(s.rindex('py'))
# print(s.rfind('py'))

# print(s.index('a'))
# print(s.find('a'))
print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
(3)find(),查找子串第一次出现的位置,如果找不到,返回-1。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
print(s.find('py'))
# print(s.rindex('py'))
# print(s.rfind('py'))

# print(s.index('a'))
print(s.find('a'))
# print(s.rindex('a'))
# print(s.rfind('a'))

运行结果
在这里插入图片描述
(4)rfind(),查找子串最后一次出现的位置,如果找不到,返回-1。

#字符串的查找操作
s='python,python'
# print(s.index('py'))
# print(s.find('py'))
# print(s.rindex('py'))
print(s.rfind('py'))

# print(s.index('a'))
# print(s.find('a'))
# print(s.rindex('a'))
print(s.rfind('a'))

运行结果
在这里插入图片描述
三、字符串的大小写操作转换
由于字符串是不可变序列,所以再经过大小写操作之后,字符串的id发生了变化,也就是产生了一个新的字符串。
(1)upper(),把所有的字符转为大写字母

s='hello,python'
print(s.upper())

运行结果
在这里插入图片描述
(2)lower(),把所有的字符转为小写字母

s='HELLO,python'
print(s.lower())

运行结果
在这里插入图片描述
(3)swapcase(),大写变小写,小写变大写

s='HELLO,python'
print(s.swapcase())

运行结果
在这里插入图片描述
(4)capitalize(),第一个字母大写,其他小写

s='HELLO,python'
print(s.capitalize())

运行结果
在这里插入图片描述
(5)title(),把每个单词的第一个字符转换为大写,每个单词剩余的字符转换为小写。

s='HELLO,python'
print(s.title())

运行结果
在这里插入图片描述
四、字符串的对齐操作
(1)center(),居中对齐
(2)ljust(),左对齐
(3)rjust(),右对齐
在(1)(2)(3)中,一般第一个参数是指定宽度,第二个参数是填充符,如果没有规定填充符的话,默认是空格。
(4)zfill(),右对齐,左边用0填充,这个里面只有一个参数,用于指定字符串的宽度。
在1)(2)(3)(4)中,如果设置的宽度小于字符串的长度,那么运行结果是字符串本身。

s='hello,python'
print(s.center(20,'*'))
print(s.ljust(20,'*'))
print(s.rjust(20,'*'))
print(s.zfill(20))
print(s.center(10,'*'))

运行结果
在这里插入图片描述
四、字符串的分割
split()左分割和rsplit()右分割。
split是从左边开始分割,默认分割符是空格,也可以指定分割符,同时也可以指定最大分割次数,那么剩余的部分就会成为单独的一部分。
rsplit与split的区别就在于从哪边进行分割,其他地方并无差别。
分割操作的返回值是列表。

#分割
s='hello python hello'
print(s.split(),type(s.split()))
s1='hello#python#hello'
print(s1.split(sep = '#'))
print(s1.split(sep = '#',maxsplit=1))

print(s.rsplit())
s1='hello#python#hello'
print(s1.rsplit(sep = '#'))
print(s1.rsplit(sep = '#',maxsplit=1))

运行结果
在这里插入图片描述
五、字符串判定操作
(1)isidentifier(),判断是否是合法的标识符

#字符串的判定操作
s='hello world'
print(s.isidentifier())

运行结果
因为有空格,不是合法的标识符
在这里插入图片描述
(2)isspace(),判断字符串是否全部是由空白字符组成,例如回车、空格和制表符。

#字符串的判定操作
s='hello world'
print(s.isspace())

运行结果
在这里插入图片描述
(3)isalpha(),判断字符串是否全部由字母组成。

#字符串的判定操作
s='helloworld'
print(s.isalpha())

运行结果
在这里插入图片描述
(4)isdecimal(),判断是否全部是由十进制的数字组成

#字符串的判定操作
s='123456'
print(s.isdecimal())

运行结果
在这里插入图片描述
(5)isnumeric(),判断是否全部是由数字组成

#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦ'
print(s.isnumeric())

运行结果
在这里插入图片描述
(6)isalnum(),判断是否全由字母和数字组成

#字符串的判定操作
s='ⅠⅡⅢⅣⅤⅥⅦABCdefg'
print(s.isalnum())

运行结果
在这里插入图片描述
六、字符串的替换与合并
(1)字符串的替换,replace()
可以有三个参数,第一个参数是被替换的,第二个是替换的内容,第三个参数是最大被替换的次数。

#替换
s='hello,world,world'
print(s.replace('world','python'))
print(s.replace('world','python',1))

运行结果
在这里插入图片描述
(2)join(),合并,将列表或元组中的字符串合并成一个字符串。

lst=['hello','world','python']
t=('hello','world','python')
print(' '.join(lst))
print(' '.join(t))

运行结果
在这里插入图片描述
看一下如果输入的是字符串的话,输出的结果是什么

print('*'.join('python'))

运行结果
在这里插入图片描述
七、字符串的比较操作
需要用到运算符。比较的规则是,首先比较第一个字符,第一个字符若相同,则比较下一个,第一个字符不相同,那么后续字符将不再被比较。依次类推。
比较原理是,两个字符进行比较时,比较的是它们的原始值,使用内置函数ord可以获得字符的原始值,同理,也可以根据chr去获得原始值所对应的字符。

#比较
s1='hello'
s2='he'
print(s1>s2)
print(ord('a'))
print(chr(97))

运行结果
在这里插入图片描述
八、字符串的切片操作
因为字符串是不可变类型,所以字符串不具备增删改的操作,所以说切片之后的字符串是一个新的字符串,即切片操作将产生新的对象

#字符串的切片操作
s='厚德博学,追求卓越'
print(s,id(s))
s1=s[:4]
print(s1,id(s1))
s2=s[5:]
print(s2,id(s2))
s3=','
ns=s1+s3+s2
print(ns,id(ns))

运行结果
在这里插入图片描述
完整切片写法,s=[起始索引:结束索引:步长]

九、格式化字符串
(1)使用%作为占位符

#占位符
#使用%作为占位符
name='A'
age=28
print('我的名字是%s,我今年%d岁'%(name,age))

运行结果
在这里插入图片描述
(2)使用{}作占位符(format方法)或者前面加一个f

#占位符
#使用{}作为占位符
name='A'
age=28
print('我的名字是{0},今年{1}岁'.format(name,age))
#前面添加一个f
print(f'我的名字是{name},今年{age}岁')

运行结果
在这里插入图片描述
(3)宽度与占位符

#占位符
print('%10d'% 10)
print('0123456789')

运行结果
在这里插入图片描述
浮点型数据

#占位符
#保留小数点后三位
print('%.3f'%3.333333)

运行结果
在这里插入图片描述
十、字符串的编码与解码
编码是指将字符串转化为二进制。
解码是将二进制转化为字符串。
编码和解码的方式要相同。

s='泰酷啦'
byte=s.encode(encoding='UTF-8')
print(byte)
print(byte.decode(encoding='UTF-8'))

运行结果
在这里插入图片描述

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

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

相关文章

【漏洞案例】云上攻防-记一次打穿云上内网的攻防实战

0x01 外网打点,但在云上 目标单位就给出了一个子域名和一个IP,访问给出的子域名就一个登录框,测试了下忘记密码处有用户名枚举,但登录功能做了登录失败处理,知道用户名也无法进行爆破。 登录时会调用api.target.com域…

CICflowmeter安装使用

项目地址:https://github.com/ahlashkari/CICFlowMeter前置条件:maven,winpcap或其他抓包工具,ideal或 Eclipse 用 ideal 打开项目,发现还需要 jnetpcap 包,但是 maven 仓库好像没有,自己编译 …

思科(Cisco)日志分析工具

作为网络安全管理员,实时监控和分析思科防火墙日志至关重要。对于安全网络,管理员需要: 检测各种网络攻击,并查明攻击的来源和类型(思科实时日志查看器)。跟踪思科防火墙上未经授权的登录尝试。获取有关活…

PHP OA协同办公管理系统mysql数据库web结构apache计算机软件工程网页wamp

一、源码特点 PHP OA协同办公管理系统 是一套完善的web设计系统,对理解php编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。 代码下载 https://download.csdn.net/download/qq_41221322/87959360https://do…

wireshark抓包工具常用功能

wireshark工具面板如下图所示: 本文记录我比较常用的功能。如果有大佬还用过其他功能麻烦指点一二。 抓包、查找、过滤、数据分析。 菜单工具栏: 设置时间戳格式: 为了方便自己查看,把时间戳格式设置为自己认为比较好看的格式…

ThinkPHP6 请求

ThinkPHP6 请求 前言一、 获取请求二、request其他方法三, 请求信息总结 前言 什么是请求,就是 G E T 和 _GET和 G​ET和_POST类似的东西 一、 获取请求 获取请求可以使用$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量,也可…

Android——快速设置Quick Settings Tile(创建自定义快速设置磁贴)

Android——快速设置Quick Settings Tile(创建自定义快速设置磁贴) 简介快速设置磁贴的使用场景创建磁贴创建自定义图标创建并声明你的tile服务 管理你的tile服务TileService生命周期选择监听模式Active mode (推荐)Non-active mode Tile状态更新Tile处理…

字节跳动云原生大数据平台运维管理实践

云原生大数据是大数据平台新一代架构和运行形态。随着字节跳动内部业务的快速增长,传统大数据运维平台的劣势开始逐渐暴露,如组件繁多,安装运维复杂,与底层环境过度耦合;对业务方来说缺少开箱即用的日志、监控、告警功…

第7讲:使用ajax技术实现弹出商品详情提示功能(xml数据)

使用ajax技术使用ajax技术实现弹出商品详情提示功能,本案例使用原生态xmlhttprequest对象,GET方法异步通讯,后台使用map保存搜索数据,查询到对应数据后,返回xml格式数据,前端使用responseXML属性返回xml格式…

Android模拟器无法启动

在Android 13版本上,关于“复制”有了新的变化,但是我在我的小米手机(也是Android 13版本的)上测试没有看到对应的变化,所以想运行一个Android 13的模拟器来测试看看,结果死活运行不起来,一直卡…

el-dialog父子传值弹窗实现(弹窗内容较多时分开写)

需求:父组件点击按钮后打开弹窗,但是因为弹窗内容巨多,直接提取出来,只要在父组件点击时才显示弹窗,并且传递值给弹窗做数据回显,编辑或者新增功能都可以。 1.首先建立父子关系 创建个弹窗组件dialog.vue&…

HTML5+CSS3+JS小实例:悬停滚动文字的导航栏

实例:悬停滚动文字的导航栏 技术栈:HTML+CSS+JS 效果: 源码: 【html】 <!DOCTYPE html> <html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"><meta name="viewport" content=…

Sql Server 获取连续日期时间

获取连续日期时间 在项目中&#xff0c;有时候需要按日期/时间统计&#xff0c;例如2023-06-21至2023-06-28期间每一天的数据&#xff0c;如果某一天没有数据&#xff0c;也要查询出来&#xff0c;用NULL处理。 1.示例 2.连续日期效果SQL DECLARE StartDate DATE 2023-06-2…

Vision Pro中VR游戏空间边界为3×3米圆形

6月25日青亭网报道&#xff0c;此前我们已经报道了苹果visionOS有三种应用类型&#xff1a;FullSpaces、Windows、Volume。其中FullSpaces是仅显示一款应用的类型&#xff0c;后两种为共享空间可多窗口、多应用显示。 在FullSpaces模式下&#xff0c;苹果的一份文档显示visionO…

应用层控制灯,自动创建设备节点,ioctl函数

目录 1. 使用应用层控制灯 1.1. 撰写驱动的.c文件 1.2. 撰写应用层的.c文件 1.3. 撰写makefile文件 1.4. 测验 2. 自动创建设备节点 2.1. 函数分析 2.2. 撰写驱动.c文件 2.3. 修改应用层.c文件 2.4. 编写makefile文件 2.5. 在开发板安装.ko驱动 3. ioctl函数&#…

2023年最新互联网Java面试八股文出炉(附大厂P5-P8技术栈)

为什么感觉 Java 面试变难了&#xff1f; 几年前&#xff0c;你只需要简单的ssm框架&#xff0c;就能轻松找到一份Java的工作&#xff0c;但现在不一样了&#xff0c;随着涌入这个行业的人越来越多&#xff0c;同一个岗位需要筛选掉更多人&#xff0c;要求自然水涨船高&#x…

mysql大文件导入sql,没有配置my-ini的情况下,或者配置文件不生效命令修改

找到mysql的bin用管理员登录mysql mysql -u root -p 修改最大传输包 set global max_allowed_packet 510241024*100;

3D扫描仪在汽车零部件产业的应用零部件逆向设计偏差检测-CASAIM

汽车零部件作为汽车工业的基础&#xff0c;是支撑汽车工业持续健康发展的必要因素。当前汽车行业正在轰轰烈烈、如火如荼开展的自主开发与创新&#xff0c;需要高效的零部件设计和质量控制解决发方案&#xff0c;CASAIM 3D扫描仪在汽车零部件产业中具有广泛的应用。 1. 零部件逆…

vue3案例2

效果图&#xff1a; <template><section><aside><ul class"nav-ul"><liclass"nav-li":class"nav.active && grey-li"v-for"nav in navArr":key"nav.id"click"onNav(nav)&qu…

实在RPA数字员工横扫618“物流拦截”难题,晨光拦截效率狂飙20倍!

历时三年疫情后&#xff0c;电商首个618大促告捷。 “百亿补贴”“击穿底价”“全网最低”“天天都是618”……在天猫的618启动会上&#xff0c;淘天集团CEO戴珊宣布这将是“历史上最大投入的一届618”&#xff1b;紧随其后的京东618启动会上&#xff0c;京东零售CEO辛利军也高…