史上最全python字符串操作指南!

Windows下用RKDevTool解包update.img的完整流程(含常见错误排查) 本文详细介绍了在Windows系统下使用RKDevTool工具解包update.img固件的完整流程。从工具准备、环境搭建到逐步解包操作,重点解析了输出文件结构,并提供了修改分区后重新打包的实战方法。文章还针对解包失败、打包错误等常见问题提供了详细的排查与解决方案,旨在帮助嵌入式开发者和爱好者高效完成固件分析与定制工作。 阅读详情
字符串的定义

日常编码中,大家会发现,太多时候我们需要对数据进行处理,而这数据不管是数组、列表、字典,最终都逃不开字符串的处理。
所以今天要来跟大家发散的聊聊字符串!
估计很多人看到是将字符串肯定觉得索然无味(老子都会),可大佬们不妨再往下看看?
python定义字符、字符串没有java那样的严格,不管是单引号、双引号、甚至是三个单引号和双引号都可以用来定义字符(串),只要成对出现即可。比如:

# 单个字符
a='a'
# 使用单引号定义字符串
name='Uranus'
# 使用双引号定义字符串
code = "Hello World ..."
# 既然说到了string,怎么能不点开源码看看呢?
class str(object):
    """
    str(object='') -> str
    str(bytes_or_buffer[, encoding[, errors]]) -> str
    Create a new string object from the given object. If encoding or
    errors is specified, then the object must expose a data buffer
    that will be decoded using the given encoding and error handler.
    Otherwise, returns the result of object.__str__() (if defined)
    or repr(object).
    encoding defaults to sys.getdefaultencoding().
    errors defaults to 'strict'.
    """

虽然这些不是主要说的,但还是简单提下,三个单引号或者双引号,主要是用来作为文档注释的,请不要拿来定义字符串(虽然这样并不会出现语法错误)。
今天主要说下关于打段的字符串应该如何定义,PEP8有规定,一行代码的长度请勿超过120个字符。那么如果遇到这种情况,该怎么办?

# 不推荐的使用方式:
line = """
Create a new string object from the given object.
If encoding or errors is specified,
then the object must expose a data buffer that will be
decoded using the given encoding and error handler.
"""
# 或者这样
line = "Create a new string object from the given object. " \
       "If encoding or errors is specified," \
       "then the object must expose a data buffer that will be" \
       " decoded using the given encoding and error handler."
# 更好的实现方式:
line = ("Create a new string object from the given object."
        "If encoding or errors is specified,"
        "then the object must expose a data buffer that will be "
        "decoded using the given encoding and error handler."
        )
字符串中简单的.is()与.()的用法

.is()*, 既然是is,那么它返回的结果只有两种,True or False
先来对比一下数字:

isdigit()
True: Unicode数字,byte数字(单字节),全角数字(双字节),罗马数字
False: 汉字数字
Error: 无

isdecimal()
True: Unicode数字,全角数字(双字节)
False: 罗马数字,汉字数字
Error: byte数字(单字节)

isnumeric()
True: Unicode数字,全角数字(双字节),罗马数字,汉字数字
False: 无
Error: byte数字(单字节)

总结几个偏门知识点:

a='①②③④⑤'
isdigit()、isnumeric() 为True isdecimal()为False
b='一壹'
isnumeric()会认为是True的哦!

再来看一个等式:

isalnum() = isdigit() + isalpha() + isspace()
isdigit()表示字符串内全部为数字
isalpha()表示字符串内全部为字符
isspace()表示字符串有一个或多个空格组成
isalnum()表示字符串内全部为数字和字符

a='12345'
b='①②③④⑤'
c='abc123'

print(a.isdigit()) # True
print(b.isalpha()) # True
print(c.isalnum()) # True

针对字符串大小写的方法:

.isupper() 字符串全部由大写组成
.islower() 字符串全部由小写组成
.istitle() 字符串形式为驼峰命名,eg:"Hello World"

以上这些用法去掉is,则变为了对应的字符串转发方法。学一套会两套,买一送一....

最后说一个不带.的is* --- isinstance(obj,type)

判断一个object是什么类型...
type可选类型为:int,float,bool,complex,str,bytes,unicode,list,dict,set,tuple
并且type可以为一个原组:isinstance(obj, (str, int))

判断字符串中的内容

.*with() starts ends 不仅支持开头结尾的匹配,还支持start和end两个参数来动态定义字符串的index位置

long_string = "To live is to learn,to learn is to better live"
long_string.startswith('To')
long_string.startswith('li', 3, 5)
long_string.endswith('live')
long_string.endswith('live', 0, 7)

同样支持start、end来判断字符串的还有 .find()、.rfind()和 .index()、.rindex()
这两类字符串寻址方法均支持从左到右、从右至左两种寻址方式,不同的是:
find在未找到时,返回-1,而index在未找到时,会抛出ValueError的异常...

long_string.index('live') # 3
long_string.rindex('live') # 42
字符串的内容变更

狭义来说使用,字符串的替换使用.replace()即可,那为什么还要单独说呢?因为它有一个可选你参数count

long_string = "To live is to learn,to learn is to better live"
long_string.count('live') # 2
long_string.replace('live','Live',1)
output:
'To Live is to learn,to learn is to better live'
# 可以看到,第二个live并未进行替换

刚才说了狭义,那么广义呢?

(l/r)strip()
将字符串左、右、两端的特定字符过滤掉,默认为空格...
strip()要注意的地方是,strip('TolLive') 中的字符并非完整匹配,而是针对每一个字符进行匹配,说起来混,直接上例子:

long_string = "To live is to learn,to learn is to better live"
long_string.strip('TolLive')
's to learn,to learn is to better'

字符串切片
字符串的切片分为long_string[start:end;step] start、end区间为左闭右开...这个网上说的太多了,再拉出来详细讲就要挨打了...

(l/r)just(width,[fillchar])、center(width, [fillchar])、zfill(width)
这些均为填充固定长度的字符,默认使用空格(zfill为左补0,z是zero的意思...),看意思就明白了,不用多讲了....

字符串格式化输出

本来fill和center等可以放在这里,但是他们使用频率和重量级不够格,就丢在上面了。
Python格式化输出分为两类,那是在pyton2的时代,即 % 和 format。这两种网上的资料太多了,说的太多显得没逼格...
但,还是要简单说说其中特殊的地方
% 格式化输出:

  • 如何在%的格式输出中,输出用来看做标记为的%符号呢? 使用两个百分号(%%)
  • %(-)(width) width为设置长度,默认左填充空格,添加-号为右填充
  • .width代表字符串截断,保留多少长度的字符串
  • type %s字符串 %d十进制整数 %f小数 ...
  • 多个参数是,后面的参数需要使用括号包裹起来
'姓名:%-5s 年龄:%4d 爱好: %.8s' % ('王大锤',30,'python、Java')
output:
'姓名:王大锤   年龄:  30 爱好: python、J'

format格式输出:
format在python3开始官方就表示为替换%的输出方式,之所以还保留着%,主要是为了兼容性考虑...

  • 对比%,format使用花括号{}表示变量
  • < > ^ 代表了format的对齐方式
'{:-^40s}'.format('华丽的分割线')
output:
'-----------------华丽的分割线-----------------'

f-string
Python3.6的版本更新时,新增了f-string,英文好的可以去看官方解释PEP 498 -- Literal String Interpolation 。
f-string是字符串引号前以f/F开头,并使用{}标注替换位置的使用形式。
之所以官方推出f-string,主要是因为它的更高的性能、更强的功能。例子走起:

name = 'Uranus'
f'Hello,{name}'
f'Hello,{name.lower()}'
f'Hello,{name:^10s}'
f'Hello,{(lambda x: x*2) (name)}'

output:
'Hello,Uranus'
'Hello,uranus'
'Hello,  Uranus  '
'Hello,UranusUranus'

怎么说,是高端了一些,但我这人有点念旧啊...

The End

字符串操作还有什么?能沾上边的东西还有太多,但再写下去天就亮了,明天还怎么上班,收摊了收摊了...
今天的内容就到这里,如果觉得有帮助,欢迎将文章或我的微信公众号【清风Python】分享给更多喜欢python的人,谢谢。

huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! huggingface使用git上传model或者Dataset到HF,当然也可以上传代码,以及大文件,很哇塞!!! 第一次使用时,需要使用设置系统全局的huggingface token,这。点击huggingface首页右上角的头像 → settings → access tokens,创建一个write权限的token,名字可以随便取。 阅读详情

相关推荐

手把手教你用Simulink+CANoe+Carsim搭建硬件在环仿真环境(避坑指南)

本文是一份详细的硬件在环仿真环境搭建指南,重点讲解如何将Simulink、CANoe和CarSim三大工具进行实战融合。内容涵盖软件版本兼容性、授权避坑、环境配置,并分步演示了从离线联合仿真到实现软实时同步的完整流程,旨在帮助汽车电子工程师高效构建稳定的HIL测试平台。

weixin_29092579的博客 406

史上最全python字符串操作指南

惨不忍睹 拿出了看家的老中医野广告,都没能拯救惨淡的selenium剧集。上周五和朋友聊天,说希望看到一些python基础的知识。本来还担心更新基础的东西没人看,但现在看来,最差不过selenium系列了...哈哈。 虽然说更新基础知识,但基础的东西不代表不重要或者说你们都会,不信走着... 记得有句话说到,当一件事请遇到了正则,那它将变为两件事。看到这句话,你们以为我要讲pyth...

清风Python 467

优化求解器性能:当分支切割算法中的gap停滞不前时如何应对

本文深入探讨了当分支切割算法求解复杂整数规划问题时,gap停滞不前的根本原因与应对策略。文章指出gap停滞源于上界(找不到更优整数解)或下界(证明过程缓慢)提升受阻,并提供了从模型改写、自定义割平面、调整搜索策略到参数调优等一系列实战方法,帮助优化工程师有效打破求解僵局,推动gap下降。

weixin_29294597的博客 381

libevent从buffer中获取字符串

static void read_cb(struct bufferevent* bev, void* ctx)  {          struct evbuffer *input = bufferevent_get_input(bev);          struct evbuffer *output = bufferevent_get_output(bev);          

webrtc 805

基于ESP32-C3的物联网硬件设计:从免费工具链到PCB打样全流程实战

在物联网和嵌入式开发领域,硬件设计是连接软件逻辑与物理世界的关键环节。其核心原理在于通过电路设计将微控制器、传感器、通信模块等电子元件有机整合,实现特定功能。掌握硬件设计能力的技术价值在于能够自主实现产品原型,优化成本与性能,并深入理解系统底层运作。常见的应用场景包括智能家居节点、环境监测设备、工业传感终端等。本文以热门的ESP32-C3 RISC-V物联网芯片和广泛使用的KiCad免费EDA工具为例,详细解析了从核心器件选型、射频电路布局、PCB设计规则到Gerber文件生产的完整流程,并分享了在嘉立创平

weixin_30918633的博客 333

Fiddler抓包实战:5分钟搞定微信公众号历史消息接口分析(附完整Python代码)

本文详细介绍了如何使用Fiddler抓包工具逆向分析微信公众号历史消息接口,并提供完整的Python代码实现。从环境准备、动态参数捕获到商业级采集系统架构设计,全面解析了突破官方接口限制的技术方案,帮助开发者高效获取公众号文章数据。

tree8的博客 329

python--如何删除字符串中的引号(单、双引号)

python删除字符串中的引号(单、双引号)的几种方法

Cassiel_f的博客 2万+

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

python如何去掉一个字符串两边的引号

需要将一个字符串的引号去掉,我是发生在如下场景。 dict={"name":"liu"} s=str(dict) s 我们明显看到,这个s的左右两边加了引号。这个时候它已经是一个字符串了,我们希望将其转换为字典类型,也就是逆回去。 由字符串类型-》字典类型。 使用eval()函数即可解决,如下: d=eval(s) d 我们发现已经没有了引号,但是要注意,d是字典类型了哦。 ...

qq_43391414的博客 1万+

yolov7目标追踪:基于自定义数据集完成检测

目标追踪包含两个阶段:(1)基于自定义数据集,训练yolo目标检测模型;(2)基于检测模型,将实时检测结果传递到StrongSORT追踪算法中,该算法在OSNet基础上结合运动和外观信息,可以跟踪yolo模型检测到的任何物体。

📷 图像处理践行者 | 传统算法 · 深度学习 · 多模态 | 分享实战经验与技术洞见,探索从像素到智能的无限可能。 2306

第23章:代码迁移——用AI将Vue2迁移到Vue3、将JS迁移到TS

> - 用AI自动将Vue2 Options API转为Vue3 Composition API的完整流程 > - 将JavaScript项目批量迁移到TypeScript,自动添加类型推导 > - 处理依赖冲突、破坏性变更和迁移后的验证方法 > - 一个完整的Vue2到Vue3迁移案例(含路由、状态管理) > - 我如何用AI将公司一个10万行代码的老项目从JS升级到TS

sfishfly的博客 208

python的endswith用法_Python startswith() and endswith()用法及代码示例

Python库提供了许多内置方法,例如startswith()和endswith()函数,它们用于与字符串相关的操作。startswith()用法str.startswith(search_string, start, end)参数:search_string:要搜索的字符串。start:的开始索引str从中搜索search_string。end:的结束索引str,可以考虑进行搜索。采用:star...

weixin_39562338的博客 338

RK3399外设驱动之MIPI

RK3399外设驱动之MIPI 文章目录RK3399外设驱动之MIPIMIPI命令解析入口代码mipi显示配置实例rk3399mipi驱动rk mipi驱动注册过程rk32_mipi_dsi.c解析 内核版本 Linux4.4 平台 rk3399 作者 nineyole MIPI命令解析入口代码 MIPI的入口代码如下:kernel\drivers\video\rockchip\screen\lcd_mipi.c static int __init rk_mipi_screen_in

学无止境 2229

Python知识点(史上最全)

Python期末考试知识点(史上最全) python简介 Python是一种解释型语言 Python使用缩进对齐组织代码执行,所以没有缩进的代码,都会在载入时自动执行 数据类型:整形 int 无限大 浮点型 float 小数 复数 complex 由实数和虚数组成 Python中有6个标准的数据类型:

weixin_43474701的博客 17万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

驼峰字符串处理 python_史上最全python字符串操作指南

原标题:史上最全python字符串操作指南字符串的定义日常编码中,大家会发现,太多时候我们需要对数据进行处理,而这数据不管是数组、列表、字典,最终都逃不开字符串的处理。所以今天要来跟大家发散的聊聊 字符串!估计很多人看到是将字符串肯定觉得索然无味(老子都会),可大佬们不妨再往下看看? python定义字符、字符串没有java那样的严格,不管是单引号、双引号、甚至是三个单引号和双引号都可以用来定义字...

weixin_39927158的博客 604

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

python 去掉双引号_史上最全python字符串操作指南

惨不忍睹拿出了看家的老中医野广告,都没能拯救惨淡的selenium剧集。上周五和朋友聊天,说希望看到一些python基础的知识。本来还担心更新基础的东西没人看,但现在看来,最差不过selenium系列了...哈哈。虽然说更新基础知识,但基础的东西不代表不重要或者说你们都会,不信走着...记得有句话说到,当一件事请遇到了正则,那它将变为两件事。看到这句话,你们以为我要讲python正则?NO...日...

weixin_39984098的博客 3437

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

史上最全,最详细的Python入门教程!你应该没见过比这篇还详细的

很多学Python学的不错的小伙伴都有碰到这样的事情吧?就是自己还没毕业就有很多的企业来聘请你去他们的公司面试入职!我身边就有一个活生生的例子,我一位学长,学了三四年的Python,毕业了去阿里面试,居然直接就被应聘上了,后来他和我们分享他的入职经验:就是把自己所学会的东西尽量做到最完美!做到最美观,代码是写给人看的,所以代码的美观性在HR那里是非常重要的,大家都好好加油!看的我们确实羡慕的要死。...

weixin_44386969的博客 4万+

python end用法_史上最全python字符串操作指南

惨不忍睹拿出了看家的老中医野广告,都没能拯救惨淡的selenium剧集。上周五和朋友聊天,说希望看到一些python基础的知识。本来还担心更新基础的东西没人看,但现在看来,最差不过selenium系列了...哈哈。虽然说更新基础知识,但基础的东西不代表不重要或者说你们都会,不信走着...记得有句话说到,当一件事请遇到了正则,那它将变为两件事。看到这句话,你们以为我要讲python正则?NO...日...

weixin_39652658的博客 513

python 字符串所有操作

python字符串操作: 字符串一般常用操作: 字符串的替换、删除、截取、复制、连接、比较、查找、分割等 字符串内置操作方法: 使用type获取创建对象的类 type(name) 使用dir获取类的成员dir(name) 使用vars获取类的成员和各个成员的值 字符串常用方法操作: 1:casefold()将所有的字符转化为小写: name = "ZhangSan" print("{0}"...

每天一勃 8072

python 判断数字 区间_史上最全python字符串操作指南

字符串的定义日常编码中,大家会发现,太多时候我们需要对数据进行处理,而这数据不管是数组、列表、字典,最终都逃不开字符串的处理。 所以今天要来跟大家发散的聊聊字符串! 估计很多人看到是将字符串肯定觉得索然无味(老子都会),可大佬们不妨再往下看看? python定义字符、字符串没有java那样的严格,不管是单引号、双引号、甚至是三个单引号和双引号都可以用来定义字符(串),只要成对出现即可。比如:# 单...

weixin_36214783的博客 1347

python字符串_史上最全python字符串操作指南

字符串的定义日常编码中,大家会发现,太多时候我们需要对数据进行处理,而这数据不管是数组、列表、字典,最终都逃不开字符串的处理。所以今天要来跟大家发散的聊聊字符串!估计很多人看到是将字符串肯定觉得索然无味(老子都会),可大佬们不妨再往下看看?python定义字符、字符串没有java那样的严格,不管是单引号、双引号、甚至是三个单引号和双引号都可以用来定义字符(串),只要成对出现即可。比如:#...

weixin_39950552的博客 272
上一篇: Python爬虫帮你自建无版权图片素材库!
下一篇: 机智程序员,用Python俘获了女神的芳心!
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值