当前位置: 首页 > news >正文

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、字符串前加 r
r : 的作用是去除转义字符 .
即如果 是“\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、字符串前加 b
b:前缀表示:后面字符串是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之字符串总结

字符串&#xff08;str&#xff09; 对于字符串的学习&#xff0c;我整理了网上的一些资料&#xff0c;希望可以帮助到各位&#xff01;&#xff01;&#xff01; 概述 由多个字母&#xff0c;数字&#xff0c;特殊字符组成的有限序列 字符串的定义&#xff1a;可以使用一对…...

Flutter鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存

✅近期推荐&#xff1a;求职神器 https://bbs.csdn.net/topics/619384540 &#x1f525;欢迎大家订阅系列专栏&#xff1a;flutter_鸿蒙next &#x1f4ac;淼学派语录&#xff1a;只有不断的否认自己和肯定自己&#xff0c;才能走出弯曲不平的泥泞路&#xff0c;因为平坦的大路…...

sql server复制一张表(表结构或表数据)SQL语句整理

1. 复制表结构及数据到新表 CREATE TABLE 新表 SELECT * FROM 旧表;这种方法会复制 旧表 中的所有内容到 新表&#xff0c;但新表不会保留原表的主键、自动递增等属性。为了保持这些属性&#xff0c;需要使用 ALTER 语句进行后续处理 2. 只复制表结构到新表 使用条件始终为假…...

c语言-进位计数制

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

记本地第一次运行seatunnel示例项目

前置 静态源码编译通过&#xff1a;https://blog.csdn.net/u011924665/article/details/143372464 参考 seatunnel官方的开发环境搭建文档&#xff1a;https://seatunnel.incubator.apache.org/zh-CN/docs/2.3.5/contribution/setup 安装scala 下载scala 去官网下载&…...

Threejs 实现 VR 看房完结

效果&#xff1a; threejs 3d Vr 看房 gitee 地址&#xff1a; threejs-3d-map: 1、threejs 实现3d 地图效果链接&#xff1a;https://blog.csdn.net/qq_57952018/article/details/1430539902、threejs 实现 vr 看房 主要代码&#xff1a; src/views/PanoramicView/index.vu…...

找出目标值在数组中的开始和结束位置(二分查找)

给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定目标值在数组中的开始位置和结束位置。 如果数组中不存在目标值 target&#xff0c;返回 [-1, -1]。 你必须设计并实现时间复杂度为 O(log n) 的算法解决此问题。 示例 1&#xff1a…...

VSCode进阶之路

VSCode进阶之路&#xff1a;从入门到高效率开发 &#x1f680; Hey&#xff0c;朋友们好&#xff01;还在为VSCode的海量功能感到眼花缭乱吗&#xff1f;咱们一起来解锁VSCode的超神技能吧&#xff01; 开篇碎碎念 &#x1f3af; 第一次用VSCode时&#xff0c;就像个闯入魔法世…...

leetcode-21-合并两个有序链表

题解&#xff1a; 1、初始化哑节点dum 2、 3、 代码&#xff1a; 参考&#xff1a;leetcode-88-合并两个有序数组...

SSM项目部署到服务器

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

【Linux】网络编程:初识协议,序列化与反序列化——基于json串实现,网络通信计算器中简单协议的实现、手写序列化与反序列化

目录 一、什么是协议&#xff1f; 二、为什么需要有协议呢&#xff1f; 三、协议的应用 四、序列化与反序列化的引入 什么是序列化和反序列化&#xff1f; 为什么需要序列化和反序列化&#xff1f; 五、序列化推荐格式之一&#xff1a;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 标准工作流

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

Nico,从零开始干掉Appium,移动端自动化测试框架实现

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

PHP合成图片,生成海报图,poster-editor使用说明

之前写过一篇使用Grafika插件生成海报图的文章&#xff0c;但是当我再次使用时&#xff0c;却发生了错误&#xff0c;回看Grafika文档&#xff0c;发现很久没更新了&#xff0c;不兼容新版的GD&#xff0c;所以改用了intervention/image插件来生成海报图。 但是后来需要对海报…...

微信小程序 - 数组 push / unshift 追加后数组返回内容为数字(数组添加后打印结果为 Number 数值类型)

前言 假设一个空数组,通过 push 方法追加了一个项,控制台打印的结果竟然是 Number 数值。 例如,以下微信小程序代码: // 源数组 var arr = [] // 追加数据 var tem = arr.push(数据)...

1、DevEco Studio 鸿蒙仓颉应用创建

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

从头开始学PHP之面向对象

首先介绍下最近情况&#xff0c;因为最近入职了且通勤距离较远&#xff0c;导致精力不够了&#xff0c;而且我发现&#xff0c;人一旦上了班&#xff0c;下班之后就不想再进行任何脑力劳动了&#xff08;对大部分牛马来说&#xff0c;精英除外&#xff09;。 话不多说进入今天的…...

C++ | Leetcode C++题解之第519题随机翻转矩阵

题目&#xff1a; 题解&#xff1a; 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是用来虚拟网关&#xff0c;噢&#xff0c;是虚拟一条虚拟网关 优先级&#xff0c;priority越大越优先&#xff0c;优先级相同&#xff0c;哪个的路由器的vrrp先起来&#xff0c;谁就是主 mstp是快速生成树协议&#xff0c;防止环路用的 优先级越小越优先 华为命令…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄

文&#xff5c;魏琳华 编&#xff5c;王一粟 一场大会&#xff0c;聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中&#xff0c;汇集了学界、创业公司和大厂等三方的热门选手&#xff0c;关于多模态的集中讨论达到了前所未有的热度。其中&#xff0c;…...

Appium+python自动化(十六)- ADB命令

简介 Android 调试桥(adb)是多种用途的工具&#xff0c;该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具&#xff0c;其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利&#xff0c;如安装和调试…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

linux 错误码总结

1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

高防服务器能够抵御哪些网络攻击呢?

高防服务器作为一种有着高度防御能力的服务器&#xff0c;可以帮助网站应对分布式拒绝服务攻击&#xff0c;有效识别和清理一些恶意的网络流量&#xff0c;为用户提供安全且稳定的网络环境&#xff0c;那么&#xff0c;高防服务器一般都可以抵御哪些网络攻击呢&#xff1f;下面…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...