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,决…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
