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

6-python中的string类型

目录

  • 内容提要
  • 字符串截取
  • python的转义字符 `\`
  • python的字符串格式化
    • format()的参数
    • format()的数字格式化
  • 字符串常用函数
    • count()函数
    • endwith()函数 与 startwith()函数
    • find()函数与index()函数
      • find()函数 ⭐
      • index()函数
    • 判断字符串内的字符种类函数
      • isalnum()函数
      • isalpha()函数
      • isdigit()函数
      • islower()函数
      • isupper()函数
    • join()函数
    • lower()函数与upper()函数
      • lower()函数
      • upper()函数
    • partition()函数 ⭐
    • replace()函数 ⭐
    • split()函数 ⭐
    • strip()函数
    • title()
    • translate()函数 ⭐

内容提要

主要介绍了python中字符串的一些补充知识:
- 字符串的截取 [头:尾:步长]
- 转义字符 \
- 字符串格式化 format()
- 常用函数等

字符串截取

🐖:python中不支持单字符类型,单字符在python中也是字符串类型

如果要访问单字符,可以使用方括号[]来截取字符串

截取语法:变量[头下标:尾下标] ,支持两个方向的截取,从左到右索引默认0开始,从右到左索引默认-1开始,下标可以为空表示取到头或尾

s = 'hello world'#012345678910# h  e  l l o   w o r l d#-11-10-9-8-7-6-5-4-3-2-1
print("s的长度为:", len(s))
print(s[:11]) # 从0开始编码,d的编号为10
print(s[:])
print(s[-11:])
print(s[-10:])
print(s[1:])
s的长度为: 11
hello world
hello world
hello world
ello world
ello world

python的转义字符 \

用途:

  • 当’'在行尾时,表示下一行是本行的延续,也称为续行符
  • 放在特定的字符前,用于输出特定的字符
    • 放在'前,输出'
    • 放在"前,输出"
    • 放在\前,输出\
  • 特殊用途
    • \n:换行
    • \r:回车:将\r后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将\r后面的内容完全替换完成。
    • \t:制表符
    • \v:纵向制表符
    • \yyy:八进制数代表的字符 比如\012代表换行
    • \xhh:十六进制数代表的字符 比如\x0a代表换行
  • 放弃转义:在字符串前面加上rR表示字符串中的每个字符都是普通字符,不需要转义
print('hello\nworld')
print(r'hello\nworld')
hello
world
hello\nworld
import time
for i in range(101):print("\r{:3}%".format(i),end=' ')time.sleep(0.05)
100% 

python的字符串格式化

python支持格式化字符串的输出,类似于C语言中的printf()函数

可以使用%来格式化字符串,常见的占位符有:

  • %s:字符串
  • %d:整数
  • %f:浮点数
print("我今年%d岁了,我想说\"%s!\",谢谢大家" %(18, "hello world"))
我今年18岁了,我想说"hello world!",谢谢大家

但是,更为便捷的进行字符串格式化的方法是使用字符串的format()方法

基本语法是通过 {}: 来代替以前的 % ,这个函数很是常用!!!

format()的参数

  • format()方法可以接受不限个参数,位置可以不按顺序
  • format()方法的参数,可以是位置参数,也可以是关键字参数
print("我今年{}岁了,我想说\"{}!\",谢谢大家".format(18, "hello world")) # 不设置指定位置,按默认顺序
print("我今年{1}岁了,我想说\"{0}!\",谢谢大家".format("hello world", 18)) # 设置指定位置
print("我今年{age}岁了,我想说\"{word}!\",谢谢大家".format(age=18, word="hello world")) # 设置关键字参数
我今年18岁了,我想说"hello world!",谢谢大家
我今年18岁了,我想说"hello world!",谢谢大家
我今年18岁了,我想说"hello world!",谢谢大家

format()的数字格式化

{:}表示是要进行数字格式化

其中,:后面的内容表示格式化的方式

  • ^, <, > 分别是居中、左对齐、右对齐,后面带宽度
  • : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。
  • + 表示在正数前显示 +,负数前显示 - (空格)表示在正数前加空格
  • bdox 分别是二进制、十进制、八进制、十六进制。
  • f% 分别是浮点数、百分比。
print("我今年{age:3d}岁了,我想说\"{word:-^20s}!\",谢谢大家".format(age=18, word="hello world")) # 设置关键字参数
我今年 18岁了,我想说"----hello world-----!",谢谢大家

例子:{word:x>20s}

  • word表示关键字参数,用于和后面的参数做对应
  • : 表示格式化的方式
  • - 表示填充的字符
  • > 表示右对齐,< 表示左对齐,^ 表示居中
  • 20 表示宽度
  • s 表示字符串,d 表示整数,f 表示浮点数,x 表示十六进制数

字符串常用函数

count()函数

用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。
语法:str.count(sub, start= 0,end=len(string))

  • sub – 搜索的子字符串
  • start – 字符串开始搜索的位置。默认为第一个字符,第一个字符索引值为0。
  • end – 字符串中结束搜索的位置。字符中第一个字符的索引为 0。默认为字符串的最后一个位置。
s = "hello world"
str = 'o'
print(s.count(str)) # 统计str在s中出现的次数
2

endwith()函数 与 startwith()函数

用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。可选参数"start"与"end"为检索字符串的开始与结束位置。
语法:str.endswith(suffix[, start[, end]])

  • suffix – 该参数可以是一个字符串或者是一个元素。
  • start – 字符串中的开始位置。
  • end – 字符中结束位置。
s = "hello world"
suffix = "ld"
print(s.endswith(suffix)) # 判断s是否以suffix结尾
True

find()函数与index()函数

find()函数 ⭐

用于检测字符串中是否包含子字符串str,如果指定beg(开始)和end(结束)范围,则检查是否包含在指定范围内,如果包含子字符串返回开始的索引值,否则返回-1
语法:str.find(str, beg=0, end=len(string))

  • str – 指定检索的字符串
  • beg – 开始索引,默认为0。
  • end – 结束索引,默认为字符串的长度。

index()函数

find()方法一样,只不过如果str不在字符串中会报一个异常。
语法:str.index(str, beg=0, end=len(string))

  • str – 指定检索的字符串
  • beg – 开始索引,默认为0。
  • end – 结束索引,默认为字符串的长度。
s = "hello world"
str = 'll'
print(s.find(str)) # 检测str是否包含在s中,如果是返回开始的索引值,否则返回-1
print(s.index(str)) # 跟find()方法一样,只不过如果str不在s中会报一个异常
2
2
s = "hello world"
print(s.find('0'))
print(s.index('0'))
-1---------------------------------------------------------------------------ValueError                                Traceback (most recent call last)Cell In[59], line 31 s = "hello world"2 print(s.find('0'))
----> 3 print(s.index('0'))ValueError: substring not found

判断字符串内的字符种类函数

isalnum()函数

如果字符串至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False

s = "helloworld"
print(s.isalnum()) # 如果s至少有一个字符并且所有字符都是字母或数字则返回True,否则返回False
ss = "hello!"
print(ss.isalnum())
True
False

isalpha()函数

如果字符串至少有一个字符并且所有字符都是字母则返回True,否则返回False

s = "helloworld"
print(s.isalpha()) # 如果s至少有一个字符并且所有字符都是字母则返回True,否则返回False
ss = "hello!"
print(ss.isalpha())
True
False

isdigit()函数

如果字符串只包含数字则返回True,否则返回False

该函数只对正数和0有效,负数返回False

s="123456"
print(s.isdigit()) # 如果s只包含数字则返回True,否则返回False
ss="123456a"
print(ss.isdigit())
ss='-1'
print(ss.isdigit())
True
False
False

islower()函数

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是小写的则返回True,否则返回False

isupper()函数

如果字符串中至少包含一个区分大小写的字符,并且这些字符都是大写的则返回True,否则返回False

s = "hello world"
print(s.islower()) # 如果s中至少包含一个区分大小写的字符,并且这些字符都是小写,则返回True,否则返回False
print(s.isupper()) # 如果s中至少包含一个区分大小写的字符,并且这些字符都是大写,则返回True,否则返回False
True
False

join()函数

用于将序列中的元素以指定的字符连接生成一个新的字符串。

语法:str.join(sequence)

  • sequence – 要连接的元素序列。
  • str – 分隔符。
list = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
str = ''
print(str.join(list)) # 以str作为分隔符,将list中所有的元素(的字符串表示)合并为一个新的字符串
hello world

lower()函数与upper()函数

lower()函数

转换字符串中所有大写字符为小写。

upper()函数

转换字符串中的小写字母为大写字母。

partition()函数 ⭐

用来根据指定的分隔符将字符串进行分割。

语法:str.partition(sub)

  • sub – 分隔符
  • str – 要分割的字符串

返回一个3元的元组,第一个为分隔符左边的子串,第二个为分隔符本身,第三个为分隔符右边的子串。

s = "hello world"
sub = ' '
print(s.partition(sub)) # 以sub为分隔符,将s分割为三部分
print(s.partition('!')) # 如果sub不存在于s中,则返回一个三元组,第一个元素为s,后两个为空字符串
('hello', ' ', 'world')
('hello world', '', '')

replace()函数 ⭐

把字符串中的old字符串替换成new字符串,如果指定第三个参数max,则替换不超过max次。

语法:str.replace(old, new[, max])

  • old – 将被替换的子字符串。
  • new – 新字符串,用于替换old子字符串。
  • max – 可选字符串, 替换不超过 max 次
s = "hello world"
print(s.replace('world', 'python')) # 把s中的old替换成new,如果num指定,则替换不超过num次
print(s.replace('o', 'O', 1))
hello python
hellO world

split()函数 ⭐

通过指定分隔符对字符串进行切片,如果参数num有指定值,则仅分隔num个子字符串。

语法:str.split(str="", num=string.count(str))

  • str – 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
  • num – 分割次数。默认为 -1, 即分隔所有。

返回分割后的字符串列表。

list = ['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']
s = '-'.join(list)
print(s)
print(s.split('-')) # 以-为分隔符,将s分割为一个list
h-e-l-l-o- -w-o-r-l-d
['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd']

strip()函数

用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。

语法:str.strip([chars])

  • chars – 移除字符串头尾指定的字符序列。
s = " hello world "
print(s.strip()) # 去除s左右两边的空格
s = s.strip()
print(s.lstrip('h')) # 去除s左边的h
hello world
ello world

title()

返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle())。

语法:str.title()

s = "hello world"
print(s.title())
Hello World

translate()函数 ⭐

根据参数table给出的表(包含 256 个字符)转换字符串的字符, 要过滤掉的字符放到 deletechars 参数中。

语法:str.translate(table[, deletechars])

  • table – 翻译表,翻译表是通过 maketrans() 方法转换而来。
    • 在 Python 3 中,maketrans() 方法被移动到了 str 类型的静态方法中,因此您需要使用 str.maketrans() 来调用它。
  • deletechars – 字符串中要过滤的字符列表。
import stringintab = "aeiou"
outtab = "12345"trantab = str.maketrans(intab, outtab)str = "this is string example....wow!!!"print(str.translate(trantab))
th3s 3s str3ng 2x1mpl2....w4w!!!

相关文章:

6-python中的string类型

目录 内容提要字符串截取python的转义字符 \python的字符串格式化format()的参数format()的数字格式化 字符串常用函数count()函数endwith()函数 与 startwith()函数find()函数与index()函数find()函数 ⭐index()函数 判断字符串内的字符种类函数isalnum()函数isalpha()函数isd…...

Windows系统内核溢出漏洞提权

目录 Windows内核溢出漏洞原理 溢出漏洞简介 什么是缓冲区 缓冲区溢出 缓冲区溢出目的 Windows内核溢出漏洞利用流程 提权实战思路 手工提权测试 辅助提权 EXP如何寻找 使用MSF提权 关于提权时可能遇到的问题 如果提权的时候发现无法执行命令的话&#xff0c;可以上…...

BlackIce病毒分析

概述 blackice是一个古老的感染型病毒&#xff0c;可感染系统中exe、doc和xls文件&#xff0c;通过USB设备和网络驱动器来传播&#xff0c;会向C&C下载pe执行&#xff0c;会关闭常用的杀软进程。下面找了一个样本&#xff0c;这个样本的代码结构清晰&#xff0c;用IDA pro…...

软件测试基础知识整理(八)- 软件缺陷

目录 一、软件缺陷 1.1 缺陷定义 1.2 缺陷判定标准 1.3 软件缺陷产生的原因 1.4 软件缺陷产生的根源 1.5 软件缺陷信息 1.5.1 缺陷状态 1.5.2 缺陷严重程度 1.5.3 缺陷优先级 1.6 缺陷报告模板 1.7 缺陷报告注意事项 1.8 缺陷跟踪流程 1.9 缺陷数据分析关注的问题 …...

有没有想过一种可能,30岁之后,转行去做IT售前?

灵魂拷问 IT行业的变化是非常迅速的&#xff0c;各种新技术、新产品、新观念、新的业务模式层出不穷&#xff0c;不仅是我们&#xff0c;客户也在不断地学习进步&#xff0c;因此我们注定要终身学习。 IT售前这个岗位为许多IT职场人提供了一种新的选择: 你不需要成为某一方面…...

基于决策树的Ensemble方法在边缘计算中的应用

随着物联网的普及&#xff0c;边缘计算已成为一种重要的技术手段。在边缘计算中&#xff0c;数据的处理和分析都是在设备端进行的&#xff0c;而不是通过云端进行。这种技术可以大大降低网络带宽和响应时间&#xff0c;从而提高了用户体验。但是&#xff0c;边缘设备通常受到计…...

golang常见导致panic的场景

1、越界 常见有数组越界和字符串越界 2、空指针引用 直接引用空指针结构体的字段会引发panic&#xff0c;但调用成员方法里如果没引用结构体的字段不会引发panic 3、断言失败 4、map操作错误 map未初始化&#xff0c;可读不可写。 map的value如果是结构体指针&#xf…...

Python 修改文件权限+只读后几行 can‘t do nonzero end-relative seeks

读后几行使用File Handle : seek 文件处理 # -*- coding: UTF-8 -*-# 打开文件 fo open("runoob.txt", "rw") print "文件名为: ", fo.nameline fo.readline() print "读取的数据为: %s" % (line)# 重新设置文件读取指针到开头 fo.…...

每日学术速递5.25

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Chupa: Carving 3D Clothed Humans from Skinned Shape Priors using 2D Diffusion Probabilistic Models 标题&#xff1a;Chupa&#xff1a;使用 2D 扩散概率模型从蒙皮形状先验雕…...

GAMES202作业1

目录 Shadow MapCalcLightMVP函数useShadowMap函数Bias函数 最终效果 PCF两个采样函数PCF函数最终效果 PCSSfindBlocker函数PCSS函数最终效果 参考 先放上公式&#xff1a; 后面的积分项是我们在作业0中就做好的blinnphong项&#xff0c;我们要求的就是积分项前&#xff0c;等…...

Android 12.0状态栏居中显示时间和修改时间显示样式

1.概述 在12.0的系统rom定制化开发中,在systemui状态栏系统时间默认显示在左边和通知显示在一起,但是客户想修改显示位置,想显示在中间,所以就要修改SystemUI 的Clock.java 文件这个就是管理显示时间的,居中显示的话就得修改布局文件了 效果图如下: 在这里插入图片描述 …...

湍流的数值模拟方法概述

湍流&#xff0c;又称紊流&#xff0c;是一种极其复杂、极不规则、极不稳定的三维流动。湍流场内充满着尺度大小不同的旋涡&#xff0c;大旋涡尺度可以与整个流畅区域相当&#xff0c;而小漩涡尺度往往只有流场尺度千分之一的数量级&#xff0c;最小尺度旋涡的尺度通过其耗散掉…...

openFast中的陆上风电机组5MW_Land_DLL_WTurb参数详解

文章目录 一、openFAST是什么&#xff1f;二、参数截图三、参数详解 一、openFAST是什么&#xff1f; openFAST是一种开放源代码的工具&#xff0c;为风能工程师提供了用于模拟和设计风力涡轮机的框架。它可以计算风力涡轮机在各种环境条件下的性能&#xff0c;并提供对风力涡…...

“卷”还是“躺平”?职场人如何在工作中找到价值感?

今天不谈技术&#xff0c;只谈进步。 曾经看过一个回答说“职场人最好的姿势是仰卧起坐”。 卷累的就躺&#xff0c;休息好了再继续卷&#xff0c;卷是常态&#xff0c;“仰卧起坐”也好&#xff0c;“卷的姿势”也好&#xff0c;都是在反复“卷起”的过程中寻找一些舒适和平衡…...

《Opencv3编程入门》学习笔记—第二章

《Opencv3编程入门》学习笔记 记录一下在学习《Opencv3编程入门》这本书时遇到的问题或重要的知识点。 第二章 OpenCV 官方例程引导与赏析 openv官方提供的示例程序&#xff1a;具体位于..\opencv\sources\samples\cpp ..\opencv\sources\samples\cpp\tutorial_code路径下存…...

ABP VNext种子数据按顺序插入

ABP VNext种子数据按顺序插入 1.Domain层1.1 新加Author和Book实体1.2 CustomDataSeedDbMigrationService新加方法1.3新加ISowSeed接口1.4 作者和图书种子数据逻辑1.5 新加CustomDataSeedDataSeederContributor 2.EntityFrameworkCore2.1 CustomDataSeedDbContext2.2 生成迁移脚…...

Verilog | FIFO简单实现

FIFO( First Input First Output)简单说就是指先进先出&#xff0c;也是缓存机制的一种&#xff0c;下面是我总结的 FIFO 的三大用途&#xff1a; 1)提高传输效率&#xff0c;增加 DDR 带宽的利用率。比如我们有 4 路视频数据缓存到 DDR 中去&#xff0c;比较笨的方法是&#x…...

设计模式应用场景

设计模式简介 工厂模式&#xff08;Factory Pattern&#xff09;&#xff1a;使用工厂方法创建对象&#xff0c;而不是使用new关键字直接实例化对象。 抽象工厂模式&#xff08;Abstract Factory Pattern&#xff09;&#xff1a;提供一个创建一系列相关对象的接口&#xff0c;…...

还在老一套?STM32使用新KEIL5的IDE,全新开发模式RTE介绍及使用

Keil新版本出来了&#xff0c;推出了一种全新开发模式RTE框架( Run-Time Environment)&#xff0c;更好用了。然而网上的教程资料竟还都是把Keil5当成Keil4来用&#xff0c;直接不使用这个功能。当前正点原子或野火的教程提供的例程虽有提到Keil5&#xff0c;但也是基本上当Kei…...

Java时间类(十一) -- Date类工具类 -- Java获取当天、本周、本月、本年 开始及结束时间

目录 1. 今天的日期如下: 2. DateUtils工具类的源代码: 3. 测试类 1. 今天的日期如下:...

从修车铺到世界冠军,从废塑料到再生资源:一场关于坚持与价值的时代对话

最近&#xff0c;张雪的故事刷屏了。这个14岁辍学、睡在修车铺阁楼、月薪300元的湖南山村少年&#xff0c;用了整整二十年&#xff0c;将自己亲手打造的摩托车送上了世界超级摩托车锦标赛&#xff08;WSBK&#xff09;的冠军领奖台。当五星红旗在葡萄牙阿尔加维国际赛道升起时&…...

OpenClaw性能调优:Qwen3-14B镜像响应速度提升3倍实操

OpenClaw性能调优&#xff1a;Qwen3-14B镜像响应速度提升3倍实操 1. 为什么需要性能调优&#xff1f; 上周我在用OpenClaw自动处理100份PDF文档时&#xff0c;发现一个奇怪现象&#xff1a;同样的任务&#xff0c;晚上执行比白天快得多。经过排查才发现&#xff0c;白天我的本…...

OpenClaw扩展性测试:Qwen3.5-9B-AWQ-4bit同时处理10个图片任务表现

OpenClaw扩展性测试&#xff1a;Qwen3.5-9B-AWQ-4bit同时处理10个图片任务表现 1. 测试背景与目标 最近在尝试用OpenClaw搭建一个本地化的图片处理工作流&#xff0c;核心需求是批量处理社交媒体图片的自动标注和分类。我选择了Qwen3.5-9B-AWQ-4bit这个支持多模态的模型镜像&…...

ESP32 PSRAM容器库:STL容器外扩至外部伪静态RAM

1. PSRAM Containers 项目概述PSRAM Containers 是一个面向 ESP32 平台的嵌入式 C 内存容器库&#xff0c;其核心目标是将标准 STL 容器&#xff08;如std::vector、std::deque、std::list、std::map等&#xff09;的功能完整迁移至外部伪静态 RAM&#xff08;Pseudo-Static RA…...

OpenClaw任务编排:Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流

OpenClaw任务编排&#xff1a;Qwen3-4B-Thinking-2507-GPT-5-Codex-Distill-GGUF处理依赖型工作流 1. 为什么需要任务编排 去年夏天&#xff0c;我接手了一个数据分析项目&#xff0c;需要定期从十几个网站抓取数据&#xff0c;清洗后生成分析报告&#xff0c;再邮件发送给团…...

2025届学术党必备的六大降重复率神器横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 当前&#xff0c;人工智能技术快速发展&#xff0c;这为毕业论文写作提供了新的辅助路径&…...

别再只会apt autoremove了!dpkg报错Sub-process returned error code (1)的5种修复姿势全解析

深度解析dpkg报错Sub-process returned error code (1)的5种专业修复策略 当你正在Ubuntu或Debian系统上安装某个关键软件包时&#xff0c;突然终端弹出一条刺眼的错误信息&#xff1a;"Sub-process /usr/bin/dpkg returned an error code (1)"。这不是普通的警告&am…...

Go语言的缓存策略与实现

Go语言的缓存策略与实现 1. 缓存简介 缓存是一种在计算机系统中用于提高数据访问速度的技术&#xff0c;它通过将频繁访问的数据存储在高速存储介质中&#xff0c;减少对慢速存储介质的访问&#xff0c;从而提高系统的响应速度和吞吐量。 缓存的优势 提高性能&#xff1a;缓存可…...

2025届学术党必备的五大降AI率工具横评

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 要是想降低AIGC检测率&#xff0c;那就得从内容生成与后期修饰这两个关键的方面开始着手。在…...

基于注意力机制的多尺度卷积神经网络在滚动轴承故障诊断中的应用

基于注意力的多尺度卷积神经网络轴承故障诊断 针对传统方法在噪声环境下诊断精度低的问题&#xff0c;提出了一种多尺度卷积神经网络的滚动轴承故障诊断方法 首先&#xff0c;构建多尺度卷积提取不同尺度的故障特征&#xff0c;同时引入通道注意力自适应地选择包含故障特征的通…...