Python 程序设计入门(005)—— 字符串操作
Python 程序设计入门(005)—— 字符串操作
目录
- Python 程序设计入门(005)—— 字符串操作
- 一、字符串切片与连接
- 1、切片的索引方式
- 2、切片操作的基本表达式
- 3、 切片操作举例
- 4、字符串连接
- 二、字符串替换:replace() 方法
- 三、去除字符串首尾特殊字符:strip() 方法
- 四、字符串大小写转换
- 五、字符串的检索
- 1、count() 方法
- 2、find() 方法
- 3、index() 方法
- 4、len() 函数
- 六、分割字符串:split() 方法
Python 中的字符串是一种序列,序列是一块用于存放多个值的内存空间。Python 内置了以下几种序列结构:字符串、列表、字典、元组和集合。
Python 中的字符串由一个或多个单个字符组成。可以通过特定的函数实现对字符串的拼接、截取、格式化等操作。
一、字符串切片与连接
在 Python 中,可以对字符串进行遍历操作,也可以使用切片的方式截取字符串。在Python中,切片(slice)是对序列型对象(如:list,string,tuple)的一种高级索引方法。普通索引只取出序列中一个下标对应的元素,而切片可以取出序列中一个范围对应的元素,这里的范围不是狭义上的连续片段。
1、切片的索引方式
以 a = [1,2,3,4,5,6,7,8,9] 为例,正索引和负索引如下表所示:
值 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|---|---|---|
正索引 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
负索引 | -9 | -8 | -7 | -6 | -5 | -4 | -3 | -2 | -1 |
2、切片操作的基本表达式
一个完整的切片包含三个参数(start_index,end_index,step)和两个冒号。当只有一个冒号时,默认第三个参数step=1;当一个冒号也没有时,start_index = end_index,表示切取 start_index 指定的那个元素。
切片操作的语法格式如下:
string[start_index: end_index: step]
说明:
(1)string:表示要截取的字符串。
(2)在中括号中以冒号分隔索引值。
(3)start_index:表示要截取的开始索引值。该参数可以省略,表示从第一个字符开始。
(4)end_index:表示要截取的结束索引值。该参数可以省略,表示截取到最后一个字符结束。
(5)step:表示切片步长,该参数可以省略,默认值为 1。
3、 切片操作举例
(1)切割单个字符
str1="www.hist.edu.cn"
print(str1[0]) # 单个字符,第0位就是第一个字符
print(str1[4]) # 第4位(第5个字符),注意从0作为第一个字符程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
w
h
(2)切割完整字符串
str1="www.hist.edu.cn"
print(str1[:]) # 单独一个冒号,代表从头取到尾,步长默认为1
print(str1[::]) # 单独两个冒号一样代表从头取到尾,步长默认为1
print(str1[::-1]) # 步长为-1,故应从右往左取,实现字符串的翻转程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
www.hist.edu.cn
www.hist.edu.cn
nc.ude.tsih.www
(3)当 start_index 和 end_index 全部为正数时
str1="www.hist.edu.cn"
print(str1[4:8]) # 默认步长为1,从左往右取出hist,注意前闭后开
print(str1[1:6:-1]) # 当取值的大小方向与步长的方向冲突时,返回值为空
print(str1[:3]) # 没有star_index代表从头开始取
print(str1[:8:-1]) # step为-1,从最后一个字符到第8个
print(str1[6::-1]) # step为-1,从第6个字符到第0个程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
histwww
nc.ude
sih.www
(4)当 start_index 和 end_index 全部为负数时
str1="0123456789"
print(str1[:-6]) # 从头开始取到从右往左数的第6个字符,默认步长为1(0123)
print(str1[-1:-6]) # 当取值的大小方向与步长的方向冲突时,返回值为空
print(str1[-1:-6:-1]) # 从右边第1个字符取到右边第5个字符(98765)
print(str1[-6:-1]) # step为-1,从最后一个字符到第6个(45678)
print(str1[:-6:-1]) # 从0取到-6,步长为-1(98765)
print(str1[-6::-1]) # 从-6取到开头,步长为-1(43210)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
012398765
45678
98765
43210
(5)start_index 和 end_index 为正负混合时
str1="0123456789"
print(str1[1:-6]) # 从第1个字符开始取到从右往左数的第6个字符,默认步长为1(123)
print(str1[1:-6:-1])# 返回值为空
print(str1[-1:6]) # 返回值为空
print(str1[-1:6:-1])# 从右边第1个字符取到第6个字符,步长为-1(987)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
123987
4、字符串连接
使用 + 可以实现字符串的连接操作。格式如下:
var = str1 + str2 + str3 + ...
说明:在进行字符串拼接时,所有参与拼接的常量和变量都必须是 string 类型。
例如:
str1 = "中国"
str2 = "河南"
str3 = "新乡"
a = 20
print(str1 + str2 + str3)
print(str1 + str2 + str(a))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
中国河南新乡
中国河南20
举例:
(1)取出身份证中的生日信息,程序如下:
str1="410755198701255210"
birth=str1[6:10]+"年"+str1[10:12]+"月"+str1[12:14]+"日"
print(birth)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
1987年01月25日
(2)截取电话号码中的数字进行运算,程序如下:
num="13803732541"
num1=int(num[-2:]) # num1="41"
num2=int(num[:2]) # num2="13"
num2+=num1 # num2=54
num1+=num2 # num1=95
num2//=3 # num2=18
num1%=num2 # num1=5
print(num1)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
5
二、字符串替换:replace() 方法
replace() 方法用于将字符串中的一部分字符替换为指定的新字符。如果不指定新字符,则删除字符。replace() 方法的语法格式如下:
str.replace(old[,new[,count]])
说明:
(1)old:表示要被替换的字字符串。
(2)new:表示用于替换 old 的新字符串。
(3)count(可选参数):表示要替换的次数。该参数如果省略,则替换所有匹配字符,指定替换次数时从左向右依次进行。
例如:
str1="www.hist.edu.cn"
str2="13703735512"
str3="410825198710122551"
str4="What's your name?\nMy name is Ligang."
str5="/u01/app/grid_11/log/log_2023_04_22.xml"
print(str1.replace(".","@"))
print(str2.replace(str2[3:7],"****"))
print(str3.replace(str3[6:13],"********"))
print(str4.replace("name","NAME",1))
print(str5.replace("/","").replace("_","").replace(".",""))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
www@hist@edu@cn
137****5512
410825********22551
What's your NAME?
My name is Ligang.
u01appgrid11loglog20230422xml
三、去除字符串首尾特殊字符:strip() 方法
Python 提供了三个方法:strip()、lstrip()、rstrip(),用于去除字符串首尾的空格及特殊字符。其中 strip() 方法用于去除字符串左右两端的特殊字符或空格,lstrip() 方法用于去除字符串左侧的特殊字符或空格,rstrip() 方法用于去除字符串右端的特殊字符与空格。
以上三个方法的参数相同,如果不指定参数,则默认去除空格、制表符(\t)、回车符(\r)与换行符(\n)。
方法 strip()、lstrip()、rstrip() 的语法格式如下:
str.strip(chars)
str.lstrip(chars)
str.rstrip(chars)
例如:
str1=" Xinxiang "
str2="*Henan%%"
print("Address:"+str1+"City")
print("Address:"+str1.lstrip()+"City")
print("Address:"+str1.rstrip()+"City")
print("Address:"+str1.strip()+"City")
print(str2.strip("%").strip("*"))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
Address: Xinxiang City
Address:Xinxiang City
Address: XinxiangCity
Address:XinxiangCity
Henan
四、字符串大小写转换
Python 提供了用于字母大小写转换的方法,包括:upper()、lower()、capitalize() 与 title()。语法格式如下:
str.upper() # 将所有字母转换为大写
str.lower() # 将所有字母转换为小写
str.capitalize() # 将一段内容的首字母转换为大写
str.title() # 将每个单词的首字母转换为大写
例如:
str1="I'm a teacher.You are a student."
print(str1.upper())
print(str1.lower())
print(str1.title())
print(str1.capitalize())程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
I'M A TEACHER.YOU ARE A STUDENT.
i'm a teacher.you are a student.
I'M A Teacher.You Are A Student.
I'm a teacher.you are a student.
五、字符串的检索
Python 提供了用于实现字符串检索的方法,通过这些方法可以实现字符串中字符的检索、统计等。
1、count() 方法
count() 方法用于查询一个字字符串出现的次数。语法格式如下:
str.count(sub[,begin[,end]])
说明:
(1)sub:表示要检索的子字符串。
(2)begin 和 end:表示检索范围的起始位置和结束位置的索引值。可以省略,如果不指定则起始位置为字符串的最左侧,结束位置则是字符串的结尾处。
(3)检索时区分大小写。
例如:
str1="www.hist.edu.cn"
print(str1.count(".")) # 3次
print(str1.count("。")) # 0次,不存在
print(str1.count(".",8)) # 2次
print(str1.count(".",9)) # 1次
print(str1.count("w",0,2)) # 2次(前开后闭)程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
0
2
1
2
2、find() 方法
find() 方法用于查询一个字字符串出现的索引位置,如果没有检索到,返回 -1。语法格式如下:
str.find(sub[,begin[,end]])
说明:sub、begin、end 三个参数与 count() 方法对应的参数作用相同。
例如:
str1="www.hist.edu.cn"
print(str1.find(".")) # 位置为:3
print(str1.find("。")) # 没找到,返回 -1
print(str1.find(".",8)) # 位置为:8
print(str1.find(".",9)) # 位置为:12
print(str1.find("w",0,2)) # 位置为:0程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
-1
8
12
0
可以使用 rfind() 方法实现从右向左检索。例如:
str1="www.hist.edu.cn"
print(str1.rfind(".")) # 位置为:12
print(str1.rfind("。")) # 没找到,返回 -1
print(str1.rfind(".",8)) # 位置为:12
print(str1.rfind(".",9)) # 位置为:12
print(str1.rfind("w",0,2)) # 位置为:1程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
12
-1
12
12
1
3、index() 方法
index() 方法用于查询一个字字符串首次出现的索引位置,如果没有检索到则抛出异常 ValueError。语法格式如下:
str.index(sub[,begin[,end]])
说明:sub、begin、end 三个参数与 find() 方法对应的参数作用相同。
例如:
str1="www.hist.edu.cn"
print(str1.index(".")) # 位置为:3
print(str1.index(".",8)) # 位置为:8
print(str1.index(".",9)) # 位置为:12
print(str1.index("w",0,2)) # 位置为:0
print(str1.index("。")) # 没找到,抛出异常程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
8
12
0
Traceback (most recent call last):File "C:\Python\Python38\First.py", line 6, in <module>print(str1.index("。")) # 没找到,抛出异常
ValueError: substring not found
4、len() 函数
len() 函数用于计算字符串的长度或列表、元组中元素的个数。len() 函数的语法格式如下:
len(s)
说明:s表示对象,可以是字符串、列表、元组、字典等。
例如:
print(len("abc")) # 3
print(len("河南新乡")) # 4
print(len("中国China")) # 7
print(len("My123")) # 5
print(len("")) # 0程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
3
4
7
5
0
六、分割字符串:split() 方法
用 split() 方法分割字符串,得到一个字符串列表。split() 方法的语法格式如下:
str.split(sep[, maxsplit])
说明:
(1)sep:指定分隔符。
(2)maxsplit:指定要分割的次数。该参数可以省略,如果省略该参数,则分割所有匹配字符。
例如:
str1="王刚,男,20,河南省新乡市,13737351268"
str2="a b c d"
str3="张三\n李四\n王五\n赵六"
str4="Tom\rKate\rJack\rRose"
print(str2.split()) # 如果省略s,则按默认值(空格,换行符,制表符)分割
print(str3.split())
print(str4.split())
print(str1.split(","))
print(str1.split(",",2)) # 只分割前两项,第二个逗号后面的内容作为第三项
print(str1.split(",",3))程序运行结果如下:
===================== RESTART: C:\Python\Python38\First.py =====================
===================== RESTART: C:\Python\Python38\First.py =====================
['a', 'b', 'c', 'd']
['张三', '李四', '王五', '赵六']
['Tom', 'Kate', 'Jack', 'Rose']
['王刚', '男', '20', '河南省新乡市', '13737351268']
['王刚', '男', '20,河南省新乡市,13737351268']
['王刚', '男', '20', '河南省新乡市,13737351268']
相关文章:
Python 程序设计入门(005)—— 字符串操作
Python 程序设计入门(005)—— 字符串操作 目录 Python 程序设计入门(005)—— 字符串操作一、字符串切片与连接1、切片的索引方式2、切片操作的基本表达式3、 切片操作举例4、字符串连接 二、字符串替换:replace() 方…...

怎样将项目jar包放到服务器上
目录 1、在配置文件中配置账号密码 2.在父级的pom里面,加上这个标签 3. deploy部署 4. 注:这两个id得匹配上(原因:有的人会只有上传到测试包的权限,id对应,拥有账号密码的才能有权限) 5.子项…...

ruby调试
如果下载 ruby-debug-ide gem install ruby-debug-ide vscode 下载 ruby扩展 1, ruby 2,修改launch.json...

【云原生】使用kubeadm搭建K8S
目录 一、Kubeadm搭建K8S1.1环境准备1.2所有节点安装docker1.3所有节点安装kubeadm,kubelet和kubectl1.4部署K8S集群1.5所有节点部署网络插件flannel 二、部署 Dashboard 一、Kubeadm搭建K8S 1.1环境准备 服务器IP配置master(2C/4G,cpu核心…...

HCIE-Datacom真题和机构资料
通过认证验证的能力 具备坚实的企业网络跨场景融合解决方案理论知识,能够使用华为数通产品及解决方案进行企业园区网络、广域互联网络及广域承载网络的规划、建设、维护及优化,能够胜任企业网络全场景专家岗位(包括客户经理、项目经理、售前…...

轮足机器人硬件总结
简介 本文主要根据“轮腿机器人Hyun”总结的硬件部分。 轮腿机器人Hyun开源地址:https://github.com/HuGuoXuang/Hyun 1 电源部分 1.1 78M05 78M05是一款三端稳压器芯片,它可以将输入电压稳定输出为5V直流电压. 1.2 AMS1117-3.3 AMS1117-3.3是一种输…...

Flowable-网关-排他网关
目录 定义图形标记XML内容示例视频教程 定义 排他网关,也叫异或(XOR)网关,是 BPMN 中使用的最常见的网关之一,用来在流转中实 现发散分支决策。排他网关需要和条件顺序流搭配使用,当流程执行到排他网关&am…...
GET 和 POST 的区别
GET 和 POST 的区别(流利说) 从 http 协议的角度来说,GET 和 POST 它们都只是请求行中的第一个单词,除了语义不同,其实没有本质的区别。 之所以在实际开发中会产生各种区别,主要是因为浏览器的默认行为造成…...

FFmpeg中硬解码后深度学习模型的图像处理dnn_processing(一)
ffmpeg 硬件解码 ffmpeg硬件解码可以使用最新的vulkan来做,基本上来说,不挑操作系统是比较重要的,如果直接使用cuda也是非常好的选择。 AVPixelFormat sourcepf AV_PIX_FMT_NV12;// AV_PIX_FMT_NV12;// AV_PIX_FMT_YUV420P;AVPixelFormat d…...

计及需求响应和电能交互的多主体综合能源系统主从博弈优化调度策略(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
local-path-provisioner的使用(hostPath、local、local-path-provisioner三者对比)
前言 环境:k8s 1.22.17 、centos7.9 有时候,为了使用本地服务器上的磁盘存储资源,我们会使用hostPath这种方式来为k8s提供本地存储,本篇就来对比一下hostPath、local这两种使用本地服务器储存的方案,从而引出第三种lo…...

命令行快捷键Mac Iterm2
原文:Jump forwards, backwards and delete a word in iTerm2 on Mac OS iTerm2并不允许你使用 ⌥← 或 ⌥→ 来跳过单词。 你也不能使用 ⌥backspace 来删除整个单词。 下面是在Mac OS上如何配置iTerm2以便能做到这一点的方法。 退格键 首先,你需要将你的左侧 ⌥…...

无涯教程-Lua - Modules(模块)
模块就像可以使用 require 加载的库,并且具有包含Table的单个全局名称,该模块可以包含许多函数和变量。 Lua 模块 其中一些模块示例如下。 -- Assuming we have a module printFormatter -- Also printFormatter has a funtion simpleFormat(arg) -- …...

url重定向
不安全的url跳转 不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话 就可能发生"跳错对象"的问题。 url跳转比较直接的危害是…...
Linux 查看IP地址、子网掩码和网关的配置信息
使用以下命令来查看IP地址、子网掩码和网关的配置信息: 1,使用ifconfig命令: ifconfig 在输出中,找到你正在使用的网络接口的配置信息。你将看到类似以下的内容: eth0: flags4163<UP,BROADCAST,RUNNING,MULTICA…...
token
token验证流程: ①客户端使用用户名和密码请求登录。 ②服务端收到请求,验证用户名和密码。 ③验证成功后,服务端会生成一个token,然后把这个token发送给客户端。 ④客户端收到token后把它存储起来,可以放在cookie…...

利用awk筛选给定时间范围内的日志
文章目录 筛选给定时间范围内的日志时间时间戳什么是时间戳? 系统时间 筛选日志时间示例简单示例mktime()函数是什么 进阶示例 筛选给定时间范围内的日志 时间 时间的表示方法: 时间戳系统时间(年月日时间) 时间戳 什么是时间…...
ORACLE字符集概念学习
1、字符集的一些基本知识 字符集有很多种,最初的字符集是ASCII,由于ASCII支持的字符很有限,因此随后又出现了很多的编码方案,这些编码方案大部分都是包括了ASCII 的。EBCDIC编码是另一个比较基本的编码,它的部分字符采…...

时间复杂度、空间复杂度实践练习(力扣OJ)
目录 文章目录 前言 题目一:轮转数组 思路一: 思路二: 思路三: 题目二:消失的数字 思路一: 思路二: 思路三: 题目三:移除元素 思路: 总结 前言 想要编写高效的…...

JMeter(二十四)、使用吞吐量控制器实现不同的用户操纵不同的业务
一、需求 需求:博客系统,模拟用户真实行为,80%的用户阅读文章,20%的用户创建文章,创建文章的用户随机的删除或者修改文章。 二、脚本实现 80%的用户查看文章 20%用户创建文章 根据post_id是否能整除2,决…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql
智慧工地管理云平台系统,智慧工地全套源码,java版智慧工地源码,支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求,提供“平台网络终端”的整体解决方案,提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

python/java环境配置
环境变量放一起 python: 1.首先下载Python Python下载地址:Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个,然后自定义,全选 可以把前4个选上 3.环境配置 1)搜高级系统设置 2…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级
在互联网的快速发展中,高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司,近期做出了一个重大技术决策:弃用长期使用的 Nginx,转而采用其内部开发…...
C# SqlSugar:依赖注入与仓储模式实践
C# SqlSugar:依赖注入与仓储模式实践 在 C# 的应用开发中,数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护,许多开发者会选择成熟的 ORM(对象关系映射)框架,SqlSugar 就是其中备受…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...

Docker 本地安装 mysql 数据库
Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker ;并安装。 基础操作不再赘述。 打开 macOS 终端,开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...
Kubernetes 网络模型深度解析:Pod IP 与 Service 的负载均衡机制,Service到底是什么?
Pod IP 的本质与特性 Pod IP 的定位 纯端点地址:Pod IP 是分配给 Pod 网络命名空间的真实 IP 地址(如 10.244.1.2)无特殊名称:在 Kubernetes 中,它通常被称为 “Pod IP” 或 “容器 IP”生命周期:与 Pod …...