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,决…...
ESP32 PSRAM容器库:STL容器外扩至外部伪静态RAM
1. PSRAM Containers 项目概述PSRAM Containers 是一个面向 ESP32 平台的嵌入式 C 内存容器库,其核心目标是将标准 STL 容器(如std::vector、std::deque、std::list、std::map等)的功能完整迁移至外部伪静态 RAM(Pseudo-Static RA…...
AI 输出 Token 优化:文言文极简模式的实践
AI 输出 Token 优化:文言文极简模式的实践在 AI 应用开发中,token 消耗直接影响成本。HagiCode 项目通过 SOUL 系统实现了"文言文极简输出模式",在不损失信息密度的前提下,将输出 token 降低约 30-50%。本文分享这套方案…...
2026 年 1月 24 日-KB5078127(OS内部版本26200.7628 和 26100.7628)带外
🔥个人主页:杨利杰YJlio❄️个人专栏:《Sysinternals实战教程》《Windows PowerShell 实战》《WINDOWS教程》《IOS教程》《微信助手》《锤子助手》 《Python》 《Kali Linux》《那些年未解决的Windows疑难杂症》🌟 让复杂的事情更…...
【FastAPI】 + SQLAlchemy 异步 ORM 实现完整 CRUD 操作
🚀从零实战:FastAPI SQLAlchemy 异步 ORM 实现完整 CRUD 操作(附完整代码) 一、为什么要学「FastAPI SQLAlchemy 异步 ORM」? 在现代 Web 服务中,数据库是核心组件。然而,传统同步操作&#x…...
别再只仿真了!用Multisim/Simulink仿真直流稳压电源(BUCK电路)后,这些关键参数和实物搭建要点你注意了吗?
从仿真到实战:BUCK电路直流稳压电源的工程化实现关键 在电力电子领域,仿真软件如Multisim和Simulink已经成为工程师的标配工具,它们能快速验证电路设计的理论可行性。但当我们真正将设计转化为实物时,往往会遇到仿真中未曾预料的各…...
TVA在汽车零部件焊接点检测中的实操启示录(3)
TVA系统在汽车零部件焊接点检测的落地,并非简单的“设备安装调试”,而是一个涉及流程优化、人员适配、技术衔接的系统工程。不少企业技术主管因忽视落地全流程管控,出现“系统安装后无法正常运行”“员工不会操作”“检测流程与生产流程脱节”…...
2026最权威的十大降AI率工具横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 凭借人工智能技术来辅助撰写开题报告,能极大程度显著提升文献梳理以及框架搭建的…...
贾子科学定理(Kucius Science Theorem):挑战证伪主义、重构“绝对真理”的科学哲学新论
贾子科学定理(Kucius Science Theorem):挑战证伪主义、重构“绝对真理”的科学哲学新论 摘要 贾子科学定理旨在系统批判波普尔的证伪主义,指出其存在逻辑悖论与文化霸权缺陷。该理论提出科学是“公理驱动、可结构化”的绝对真理…...
5种突破方案:非Steam游戏创意工坊模组获取终极指南
5种突破方案:非Steam游戏创意工坊模组获取终极指南 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 一、问题定位:非Steam玩家的创意工坊访问困境 1.1 核…...
Ollama拉取模型遇EOF重试上限?从网络到缓存的深度排错指南
1. 遇到EOF重试上限错误时的心态调整 第一次看到"Error: max retries exceeded: EOF"这个报错时,我正坐在电脑前准备测试一个新的大语言模型。说实话,这个错误信息让我有点懵——它既没有明确告诉我哪里出了问题,也没给出具体的解决…...
