python之字符串总结
字符串(str)
对于字符串的学习,我整理了网上的一些资料,希望可以帮助到各位!!!
概述
由多个字母,数字,特殊字符组成的有限序列字符串的定义:可以使用一对单引号或者双引号,也可以一对三个单引号或者一对三个双引号定义字符串。注意: 没有单符号的数据类型'a' "a"
s1 = 'hello, world!'
s2 = "你好,世界!"
print(s1, s2)
# 以三个双引号或单引号开头的字符串可以折行
s3 = '''
hello,
world!
'''
print(s3, end='')
print函数中的end=' '表示输出后不换行,即将默认的结束符\n(换行符)更换为' '(空字符)
创建字符串
#创建字符串
str="apple"
str1='orange'
print(type(str),type(str1))#<class 'str'> <class 'str'>#\转义字符作用:让一些符号失去原有的意义
str2 = "\"李白\""
str3 = '\'原神\''
print(str2, str3)
# "李白" '原神'#定义字符串的时候,单双引号可以互相嵌套
str4="'原神,'启动!!!'"
print(str4)
# '原神,'启动!!!'
拼接和重复(+、*)
s1 = 'hello' + ' ' + 'world'
print(s1) # hello world
s2 = '!' * 3
print(s2) # !!!
s1 += s2 # s1 = s1 + s2
print(s1) # hello world!!!
s1 *= 2 # s1 = s1 * 2
print(s1) # hello world!!!hello world!!!
比较运算(ord、is、id)
字符串的比较运算比较的是字符串的内容
如果不清楚两个字符对应的编码到底是多少,可以使用ord()函数来获得
s1 = 'a whole new world'
s2 = 'hello world'
print(s1 == s2, s1 < s2) # False True
print(s2 == 'hello world') # True
print(s2 == 'Hello world') # False
print(s2 != 'Hello world') # True
s3 = '李白'
print(ord('李'), ord('白')) # 26446 30333
s4 = '秦始皇'
print(ord('秦'), ord('始'), ord('皇')) # 31206 22987 30343
print(s3 > s4, s3 <= s4) # False True
如果用is来比较两个字符串,它比较的是两个变量对应的字符串对象的内存地址
s1 = str(123)
s2 = str(123)
s3 = s2
# 比较字符串的内容
print(id(s1))#2293238767536
print(id(s2))#2293238767584
print(id(s3))#2293238767584
print(s1 == s2, s2 == s3) # True True
# 比较字符串的内存地址
print(s1 is s2, s2 is s3) # False True
字符串特殊处理(r、f、b、u)
1、字符串前加 rr : 的作用是去除转义字符 .即如果 是“\n”那么表示一个反斜杠字符 ,一个字母 n ,而不是表示换行了。以 r 开头的字符,常用于正则表达式,对应着 re 模块。2、字符串前加 f#以f开头表示在字符串内支持大括号内的python表达式 import time name = "py小王子" t0 = time.time() # 这里设一些耗时操作,用sleep模拟 time.sleep(10) print(f'{name} done in {time.time() - t0:.2f}s') # py小王子 done in 10.00s
3、字符串前加 bb:前缀表示:后面字符串是bytes类型。网络编程中,服务器和浏览器只认bytes类型数据。4、字符串前加u例:u"我是含有中文字符组成的字符串。"后面字符串以 Unicode 格式进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出现乱码。
成员运算(in、not in)
s1 = 'hello, world'
print('wo' in s1) # True
s2 = 'goodbye'
print(s2 in s1) # False
循环遍历(range)
方法1、
s1 = 'hello'
for index in range(len(s1)):print(s1[index])
方法2、
s1 = 'hello'
for ch in s1:print(ch)
字符串的下标和切片
下标 : 也叫索引 , 表示第几个数据在程序中 , 下标一般从 0 开始 , 可以通过下标获取指定位置的数据str1="welcome" print(str1[0]) #w print(str1[3]) #c
切片 : 从字符串中复制一段指定的内容 , 生成一个新的字符串str2 = "welcome to beijing" ''' 切片的语法: 字符串[start:end:step]截取的字符串包含开始下标对应的字符串 start表示开始下标end表示结束下标 step表示步长 ''' print(str2[0:3]) # wel 包含start不包含end print(str2[1:]) # elcome to beijing 若只设置了start表示从开始下标一直截取到最后 print(str2[:4]) # welc 若只设置了end表示从第一个字符开始一直截取到指定结束的位置 print(str2[1:4:2]) # ec # print(str2[1:4:0]) # 在切片的时候,步长不能设置为0,ValueError: slice step cannot be zero print(str2[::]) # welcome to beijing 若未设置开始和结束,表示复制字符串 print(str2[::-1]) # gnijieb ot emoclew 表示翻转字符串 print(str2[-9:-3]) # o beij start和end若都为负数,表示从右边开始数
注意,因为字符串是不可变类型,所以不能通过索引运算修改字符串中的字符
获取长度和次数(len、count)
str4 = "'原神,'启动!!!'"
# 获取字符串的长度len()
print(len(str4)) # 11# count()在整个字符串中查找子字符串出现的次数
str = "电脑卡了,ss电脑呢?"
print(str.count("电脑")) # 2
# 在指定区间内查找出现的次数
print(str.count("电脑", 5, 30)) # 1
字符串查找(find、rfind、index)
#find()查找子串在字符串中第一次出现的位置,返回的是下标,若未找到返回-1ss3="123asdfASDCXaZ8765sahbzcd6a79"
print(ss3.find("a")) #3print(ss3.find("y")) #-1 未找到子串,返回-1#在指定区间内查找
print(ss3.find("a",5,20)) #12#rfind查找子串在字符串中最后一次出现的位置,返回的是下标,若未找到返回-1 print(ss3.rfind("a")) #25
print(ss3.rfind("y")) #-1#index()功能和find类似在字符串中未找到的时候,直接报错
print(ss3.index("d")) #5
#print(ss3.index("y"))#ValueError:substringnotfound#max()min()依据ASCII码进行的获取print(max(ss3)) #z
print(min(ss3)) #1
大小写转换(upper、lower、title)
#2.字符串大小写转换upper()lower()
#upper()将字符串中的小写字母转换为大写
str1="i Miss you Very Much!"
print(str1.upper()) #I MISS YOU VERY MUCH!#lower()将字符串中的大写字母转化为小写
print(str1.lower()) #i miss you very much!#swapcase 将字符串中的大写转换为小写,将小写转换为大写]
print(str1.swapcase()) #I mISS YOU vERY mUCH!#title()将英文中每个单词的首字母转换为大写
str2="i love you forever!"
print(str2.title()) # I Love You Forever!
提取(strip)
# strip()去除字符串两边的指定字符(默认去除的是空格)
ss4 = " today is a nice day "
ss5 = "***today is a nice day****"
print(ss4) # today is a nice day
print(ss4.strip()) # today is a nice day
print(ss5) # ***today is a nice day****
print(ss5.strip("*")) # today is a nice day
# lstrip只去除左边的指定字符(默认去除的是空格)
print(ss5.lstrip("*")) # today is a nice day****
# rstrip只去除右边的指定字符(默认去除的是空格)
print(ss5.rstrip("*")) # ***today is a nice day
分割和合并(split、splitlines、join)
# split()以指定字符对字符串进行分割(默认是空格)
ss6 = "this is a string example.....wow!"
print(ss6.split()) # 以空格进行分割['this','is','a','string','example.....wow!']
print(ss6.split("i")) # ['th', 's ', 's a str', 'ng example.....wow!']# splitlines()按照行切割
ss7 = '''将进酒
君不见黄河之水天上来,奔流到海不复回.
君不见高堂明镜悲白发,************.
'''
print(ss7)
print(ss7.splitlines()) # ['将进酒', '君不见黄河之水天上来,奔流到海不复回.', '君不见高堂明镜悲白发,************.']# join以指定字符进行合并字符串
ss8 = "-"
tuple1 = ("hello", "every", "body")
print(tuple1) # ['将进酒', '君不见黄河之水天上来,奔流到海不复回.', '君不见高堂明镜悲白发,************.']
print(ss8.join(tuple1)) # hello-every-body
替换(replace)
# 替换
# replace()对字符串中的数据进行替换
ss9 = "第五人格,启动!!第五人格,真好玩!!"
print(ss9)
print(ss9.replace("第五人格", "***")) # ***,启动!!***,真好玩!!
# 控制替换的字符的次数
print(ss9.replace("第五人格", "***", 1)) # ***,启动!!第五人格,真好玩!!
判断(isupper、islower、isdigit、istitle、isalpha)
# 字符串判断
# isupper()检测字符串中的字母是否全部大写
print("ASDqwe123".isupper()) # False
print("ASD123".isupper()) # True
print()# islower()检测字符串中的字母是否全部小写
print("ASDqwe123".islower()) # False
print("qwe123".islower()) # True
print()# isdigit()检测字符串是否只由数字组成
print("1234".isdigit()) # True
print("1234asd".isdigit()) # False
print()# istitle()检测字符串中的首字母是否大写
print("Hello World".istitle()) # True
print("hello every body".istitle()) # False
print()# isalpha()检测字符串是否只由字母和文字组成
print("你好everyone".isalpha()) # True
print("你好everyone123".isalpha()) # False
前缀和后缀(startswith、endwith)
# 前缀和后缀:判断字符串是否以指定字符开头或者以指定字符结束# startswith()判断字符串是否以指定字符开头
# endwith()判断字符串是否以指定字符结束
s1 = "HelloPython"
print(s1.startswith("Hello")) # True
print(s1.endswith("thon")) # True
编解码(encode、decode)
# encode()编码
# decode()解码
s2 = "hello py小王子"
print(s2.encode()) # b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s2.encode("utf-8")) # b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s2.encode("gbk")) # b'hello py\xd0\xa1\xcd\xf5\xd7\xd3'
# 解码
s3 = b'hello py\xe5\xb0\x8f\xe7\x8e\x8b\xe5\xad\x90'
print(s3.decode()) # hello py小王子
ASCII码转换
chr() 将对应的ASCII码的值转换为对应的字符ord() 获取对应字符的ASCII的值print(chr(68)) # D print(ord("a")) # 97
格式化输出(%)
通过%来改变后面字母或者数字的含义,%被称为占位符
# 字符串格式化输出
'''
%占位符
%d表示整数
%f表示小数
%s表示字符串
%.3f(表示保留3位小数,保留的小数数位自己可以控制)
'''
name = "py小王子"
sex = "男"
money = 198987932.787532
print("我的姓名是:%s" % name) # 我的姓名是:py小王子
print("我的大号是%s,性别是%s,我的财富是%.2f" % (name, sex, money))
# 我的大号是py小王子,性别是男,我的财富是198987932.79
# 还可以通过f"{}{}"这种方式实现格式化输出
print(f"我的大号是:{name},性别是:{sex},我的财富是{money}") # 我的大号是:py小王子,性别是:男,我的财富是198987932.787532
格式化字符串(center、ljust、rjust)
在Python中,字符串类型可以通过center、ljust、rjust方法做居中、左对齐和右对齐的处理。如果要在字符串的左侧补零,也可以使用zfill方法。
s1 = 'hello, world'
print('wo' in s1) # True
s2 = 'goodbye'
print(s2 in s1) # Falses = 'hello, world'
# center方法以宽度20将字符串居中并在两侧填充*
print(s.center(20, '*')) # ****hello, world****
# rjust方法以宽度20将字符串右对齐并在左侧填充空格
print(s.rjust(20)) # hello, world
# ljust方法以宽度20将字符串左对齐并在右侧填充~
print(s.ljust(20, '~')) # hello, world~~~~~~~~
# 在字符串的左侧补零
print('33'.zfill(5)) # 00033
print('-33'.zfill(5)) # -0033
总结
Python中操作字符串可以用拼接、切片等运算符,也可以使用字符串类型的方法。
恭喜你学会了字符串,快去试试吧!!!
相关文章:

python之字符串总结
字符串(str) 对于字符串的学习,我整理了网上的一些资料,希望可以帮助到各位!!! 概述 由多个字母,数字,特殊字符组成的有限序列 字符串的定义:可以使用一对…...
Flutter鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
✅近期推荐:求职神器 https://bbs.csdn.net/topics/619384540 🔥欢迎大家订阅系列专栏:flutter_鸿蒙next 💬淼学派语录:只有不断的否认自己和肯定自己,才能走出弯曲不平的泥泞路,因为平坦的大路…...
sql server复制一张表(表结构或表数据)SQL语句整理
1. 复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表;这种方法会复制 旧表 中的所有内容到 新表,但新表不会保留原表的主键、自动递增等属性。为了保持这些属性,需要使用 ALTER 语句进行后续处理 2. 只复制表结构到新表 使用条件始终为假…...

c语言-进位计数制
文章目录 一、进位计数制是什么?二、c语言1.二进制转十进制2.十进制转二进制 一、进位计数制是什么? 进位计数制简称进制,是人类用于计算数量的基本规则。 可使用数字符号的数目称为基数或底数,基数个数为n个,即可称n…...

记本地第一次运行seatunnel示例项目
前置 静态源码编译通过:https://blog.csdn.net/u011924665/article/details/143372464 参考 seatunnel官方的开发环境搭建文档:https://seatunnel.incubator.apache.org/zh-CN/docs/2.3.5/contribution/setup 安装scala 下载scala 去官网下载&…...
Threejs 实现 VR 看房完结
效果: threejs 3d Vr 看房 gitee 地址: threejs-3d-map: 1、threejs 实现3d 地图效果链接:https://blog.csdn.net/qq_57952018/article/details/1430539902、threejs 实现 vr 看房 主要代码: src/views/PanoramicView/index.vu…...
找出目标值在数组中的开始和结束位置(二分查找)
给你一个按照非递减顺序排列的整数数组 nums,和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target,返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1:…...
VSCode进阶之路
VSCode进阶之路:从入门到高效率开发 🚀 Hey,朋友们好!还在为VSCode的海量功能感到眼花缭乱吗?咱们一起来解锁VSCode的超神技能吧! 开篇碎碎念 🎯 第一次用VSCode时,就像个闯入魔法世…...

leetcode-21-合并两个有序链表
题解: 1、初始化哑节点dum 2、 3、 代码: 参考:leetcode-88-合并两个有序数组...

SSM项目部署到服务器
将SSM(Spring Spring MVC MyBatis)项目部署到服务器上,通常需要以下步骤: 打包项目 生成一个WAR文件,通常位于target目录下 配置Tomcat: 将生成的WAR文件复制到Tomcat的webapps目录下。 配置conf/se…...

【Linux】网络编程:初识协议,序列化与反序列化——基于json串实现,网络通信计算器中简单协议的实现、手写序列化与反序列化
目录 一、什么是协议? 二、为什么需要有协议呢? 三、协议的应用 四、序列化与反序列化的引入 什么是序列化和反序列化? 为什么需要序列化和反序列化? 五、序列化推荐格式之一:JSON介绍 六、网络版计算器编程逻…...
Educational Codeforces Round 171 (Rated for Div. 2)(A~D) 题解
Problem - A - Codeforces--PerpendicularSegments 思路:正方形对角线最长,并且相互垂直.直接输出即可. int x,y,k; void solve(){ //Acin>>x>>y>>k;int resmin(x,y);cout<<"0 0"<<" "<<res<<" &q…...

【教程】Git 标准工作流
目录 前言建仓,拉仓,关联仓库修改代码更新本地仓库,并解决冲突提交代码,合入代码其他常用 Git 工作流删除本地仓库和远程仓库中的文件日志打印commit 相关 前言 Git 是日常开发中常用的版本控制工具,配合代码托管仓库…...

Nico,从零开始干掉Appium,移动端自动化测试框架实现
开头先让我碎碎念一波~去年差不多时间发布了一篇《 UiAutomator Nico,一个基于纯 adb 命令实现的安卓自动化测试框》(https://testerhome.com/topics/37042), 由于种种原因 (详见此篇帖子) 当时选择了用纯 adb 命令来实现安卓自动…...

PHP合成图片,生成海报图,poster-editor使用说明
之前写过一篇使用Grafika插件生成海报图的文章,但是当我再次使用时,却发生了错误,回看Grafika文档,发现很久没更新了,不兼容新版的GD,所以改用了intervention/image插件来生成海报图。 但是后来需要对海报…...
微信小程序 - 数组 push / unshift 追加后数组返回内容为数字(数组添加后打印结果为 Number 数值类型)
前言 假设一个空数组,通过 push 方法追加了一个项,控制台打印的结果竟然是 Number 数值。 例如,以下微信小程序代码: // 源数组 var arr = [] // 追加数据 var tem = arr.push(数据)...

1、DevEco Studio 鸿蒙仓颉应用创建
1. 仓颉鸿蒙应用简介 因为仓颉是静态编译型语言,使用仓颉开发的应用执行效率更高。而且主打全场景,后续可并入仓颉生态,其和ArkTS都是基于ArkUI进行开发,最大的区别是typescript和仓颉语法间的差异。 2. 应用创建 前置条件&…...

从头开始学PHP之面向对象
首先介绍下最近情况,因为最近入职了且通勤距离较远,导致精力不够了,而且我发现,人一旦上了班,下班之后就不想再进行任何脑力劳动了(对大部分牛马来说,精英除外)。 话不多说进入今天的…...

C++ | Leetcode C++题解之第519题随机翻转矩阵
题目: 题解: class Solution { public:Solution(int m, int n) {this->m m;this->n n;this->total m * n;srand(time(nullptr));}vector<int> flip() {int x rand() % total;vector<int> ans;total--; // 查找位置 x 对应的…...

vrrp和mstp区别
思路 vrrp是用来虚拟网关,噢,是虚拟一条虚拟网关 优先级,priority越大越优先,优先级相同,哪个的路由器的vrrp先起来,谁就是主 mstp是快速生成树协议,防止环路用的 优先级越小越优先 华为命令…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...

Opencv中的addweighted函数
一.addweighted函数作用 addweighted()是OpenCV库中用于图像处理的函数,主要功能是将两个输入图像(尺寸和类型相同)按照指定的权重进行加权叠加(图像融合),并添加一个标量值&#x…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...