python字符串怎么用_零基础如何使用python处理字符串?

摘要:Python的普遍使用场景是自动化测试、爬取网页数据、科学分析之类,这其中都涉及到了对数据的处理,而数据的表现形式很多,今天我们来讲讲字符串的操作。

字符串是作为任意一门编程语言的基础,在Python中的关键字叫做str。而本文对字符串的操作都是建立在数据是字符串而言,可以通过内置函数type()来测试一组数据是否是字符串。

a8a9b839d8d4d5b1a8820532a7dc81ed.png

官方标准库有一个独立的文件叫string.py,对字符串的一些常量和方法进行了定义。新手不用去查阅,应先知其然,不用知其所以然,否则学习的动力瞬间烟消云散,深奥晦涩的术语直接让你蒙圈。

c48f2f972d421ae8cde10e12c9de0320.png

字符串的概念很好理解,就是一串连续的东西,由各种符号文字组成的一个整体。如果我们想对这一个整体的部分内容进行选取或者替换呢?诸如此类的操作叫字符串方法,官方给出了如此之多的方法:

ec448b5169bd105305ba95dbbee48eee.png

我们先依次对这些字符串方法简单介绍一下作用。

c5cdf95286a64ef1f44c884f07968078.png

dcf2690bdeec74b623d92dff5ed0d29c.png

4b4db25099905abddaf341819f8d793e.png

是不是看得眼花缭乱?别担心,接下来我们就重点讲解新手入门常用的一些字符串方法,帮助你完善日常字符串处理能力。

字符串方法之:字母大小写

capitalize() vs title()

这两个方法都是首字母大写,但是title允许前面有非字母字符,是真正意义上的首字母大写,对于新手而言,title()更简短更好记,而且适用范围更广。如果二选一的话,建议先记住一个字符串首字母需要大写的情况下优先使用title()。

f1d4024968608084267662f3cbd9c0d0.png

casefold() vs lower()

不像前面的首字母大写还区分前面是否包含非字母字符,casefold和lower的作用是字符串里面所有的大写字母转换为小写,区别在哪呢?lower可以理解为casefold的子集,casefold除了可以转换英文字母的小写,还可以转换其他语言的小写。优先记住casefold,总能达到小写转换的目的。

d06734b04505f8b44d175a253eda1ec7.png

upper() vs swapcase()

字母全部大写就简单好记了,预设方法就upper。毕竟它强大到非英文字母也能转换,所以有它足矣。而swapcase和upper一样强大,对任意字符串的字母进行反转,同样适用于非英语范围。

4a23936a93c3ca461d16c963452b9439.png

字符串方法之:真值检测

istitle() vs islower() vs isupper()

上面我们已经学习过这三个对于大小写的操作方法,现在前面分别加了is的作用是判断字符串是否满足该方法,并得到一个布尔值。

7e64a0be0a2ad673ac419303719b9c25.png

isalnum() vs isalpha()

字符串里是否有字母我们可以使用这两个判断,如果不但想知道是否有字母,还想知道是否有数字?那么isalnum就为你量身定做。

isdecimal() vs isdigit() vs isnumeric()

当然更加准确的判断数字可以使用这些方法,isdecimal是检测字符串是否全部为十进制数字,而十进制数字也就是我们平时输入的数字。新手平时使用的也就是数字,那么isdigit和isnumeric也是用来检测字符串是否全部为数字组成。三者都是用来检测数字,区别呢?我相信python开发者不会为一个作用创造出好几种方法。主要区别是isdigit可以检测字节中的数字,isnumeric可以检测其他语言的数字,如中文。

212c6a13ff040d1a2fd450631388c126.png

其余的如isascii和isprintable暂时不做解释,毕竟字符编码新手还未理解。isidentifier依然忽略,毕竟关键字和标识符这些概念需要慢慢理解和识记。至于isspace那就相当简单,判断是否包含空格而已。而前面篇幅我们了解了很多关于字符串数字和字母操作,而不管数字还是字母都属于字符,而startswith就是从左开始判断字符串是否包含指定字符,而endswith则是从右。

字符串方法之:增删查改

是时候表演真正的技术了,字符串方法如果仅仅只是比较大小写,判断数字是否太low了?很多时候,我们想把原字符串进行修改替换,那么怎么办呢?

增:zfill()

如果我们字符串长度为5,而我们需要按照长度为10进行存储。这时候就可以使用zfill,长度不够,用0从左开始占位进行补充。

至于ljust和rjust可以不做了解,比较对于空格大家都是会处理掉,而不是增加。ljust是向右增加长度,rjust则是向左增加长度,用空格进行补充。

同样作为空格填充的还有center,指定一个长度,长度不够,则用空格从两边均匀填充,使得字符串保持居中的位置。

060ce43aedc0f98978afd538ad3e1c18.png

删:strip() vs removeprefix() vs removesuffix()

strip用来去除字符串两端的空格,lstrip和rstrip大同小异,不过只能单向删去,前者删除左侧,后者删除右侧。而如果我们想去除空格的话,基本上是使用strip就行了,毕竟不管是左还是右,我们都想去除。一个strip就完事了!至于removeprefix是用来从左删除指定内容,removesuffix反之,从右开始删除。

c93fd796310d2c053b8070afb2a15f9c.png

查:count() vs find() vs index()

当我们想知道字符串中某个字符一共出现了几次,可以使用count,如果只想知道某个字符第一次出现的位置(或者专业一点叫索引,索引都是从0开始的!),可以使用find或者index,区别在于如果你不确定某个字符是否存在,最好用find。不存在的情况下find会返回-1,而index直接报错,影响程序进行。有的人会问:如果我只想知道字符最后一次出现的位置呢?官方已经提供了解决方案,rfind和rindex方法就是从右开始查找。

36a571abc3a19746577166560a86aef1.png

改:replace() vs format() vs partition() vs split() vs join()

说完了增删查,最后就是改了。replace就是最直接的修改方法,可以指定修改次数。而高大上的format则是用来按照指定格式进行修改,如数字格式化,带不带小数等等,这里不做详细解释,因为新手使用format只是用来指定位置传递变量,组成新的字符串。partition和split都是用来分隔,区别在于前者返回元组,后者返回列表。同时,partition分隔包含分隔符,split则不包含。看到这里,想必大家对一个方法前面加r已经有点感悟了,没错,就是从右开始的意思。同样的,rpartition和rsplit都是从右开始分隔。或许会有人问?如果我是包含换行的字符串怎么逐行分隔呢?splitlines应运而生,专门处理跨行分隔。

63be9b856db5793eaeb83424985b25d3.png

前面说了分隔,那么怎么合并呢?join方法用来按照指定字符串连接一个序列。

join方法适用于常规序列,如列表,元组等,如果是字典的话,则将键进行连接。注意,连接的序列里最少需要两个元素,否则将直接返回序列,而不是连接好的序列。而作为字符串操作方法,join连接的序列里的元素只能为字符串类型。

2b0b217b3bdb91dde8549a5e45732b22.png

作为零基础教程,encode()、expandtabs()、format_map()、maketrans()、translate()需要等对Python有一定理解能力的时候再做学习。

知识是用来传播的,如果你从中获益,除了自己收藏外,别忘了分享给更多人哦~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/489099.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS NSString 与NSData转化

1. 字符串转Data NSString * str "str"; NSData *data [str dataUsingEncoding:NSUTF8StringEncoding]; 2.NSData 转NSString NSString * str [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 3.data 转char NSData *data; char * ha…

python eval函数格式_Python函数中eval函数知识点

python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们…

为什么在python中整数的值没有限制_python-为什么math.log接受大整数值?

我终于钻入python math lib source code,发现了这一点:/* A decent logarithm is easy to compute even for huge ints, but libm cantdo that by itself -- loghelper can. func is log or log10, and name is"log" or "log10". Note that ove…

汽车芯片科普

来源:湖杉资本智能驾驶涉及人机交互、视觉处理、智能决策等,核心是 AI 算法和芯片。伴随汽车电子化提速,汽车半导体加速成长,2017 年全球市场规模 288 亿美元(26%),远高于整车销量增速&#xff…

python程序打包时出现lib not found_pyinstaller打包py脚本Warning:lib not found等相关问题...

小爬从使用Pyinstaller打包py为exe文件以来,一直都会碰到Warning:lib not found等相关问题,诸如:虽然大多数时候,您像我一样忽略这些warning,打包后的exe也能运行。网上有一堆的方法,有建议装wi…

hanoi塔java_Java实现hanoi塔

学习数据结构绕不过会遇到汉诺塔的问题,这个也比较经典,问题我也不详细描述了。简单来说三根木桩,初始状态下一根木桩上叠放着n个盘子,大盘在下小盘在上,任你操作,把这些盘子移动到第三根木桩,当…

信息太多,时间太少: 大脑如何区分重要和不重要的事?

来源:脑与心智毕生发展研究中心CLIMB我们总是会错过一些想看到、听到或感觉到的东西——尤其是当有大量信息争夺我们的注意时。是什么吸引了我们的注意?记住重要的事情需要多长时间?神经科学家(研究大脑和行为的科学家)发现,大脑的…

Java缓存框架使用EhCache结合Spring AOP

Java缓存框架使用EhCache结合Spring AOP 一.Ehcache简介 EhCache是一个纯Java的进程内缓存框架,具有如下特点: 1. 快速简单,非常容易和应用集成。 2.支持多种缓存策略 。 3. 缓存数据有两级:内存和磁盘,因…

python vba 秒出结果_为什么公司每天用20个人手工处理数据出报告,也不用5个会vba,python的人来制作??...

逼呼上无数人反复在说:先问是不是,再问为什么!不是没有道理啊!!!可能题主所在单位是这种情况,你看到处理数据出报告的人都不会VBA,也不会python,但是并不是所有单位都这样…

java 并发 set_高并发下的Java数据结构(List、Set、Map、Queue)

1.并发ListVector 或者 CopyOnWriteArrayList 是两个线程安全的List实现,ArrayList 不是线程安全的。因此,应该尽量避免在多线程环境中使用ArrayList。如果因为某些原因必须使用的,则需要使用Collections.synchronizedList(List list)进行包装…

知识图谱和图分析与可视化

来源:知链数据“知识图谱和图分析与可视化”这个题目看起来比较大,我尝试基于本人的一些图数据可视化与分析经验,对知识图谱和图分析与可视化之间的关系进行简单梳理,并分享一些以知识图谱为代表的图数据与图可视化、图分析结合进…

python 生成器装饰器_4.python迭代器生成器装饰器

基本概念1.容器(container)容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中。通常这类数据结构把所有的元素存储在内存中(也有一些特例,并不是所有的元素都放在内…

java开源对象池_JAVA 对象池

GenericObjectPool利用一个org.apache.commons.collections.CursorableLinkedList对象来保存对象池里的对象。这种对象池的特色是:可以设定最多能从池中借出多少个对象。可以设定池中最多能保存多少个对象。可以设定在池中已无对象可借的情况下,调用它的…

新一代人工智能专利分析

来源:三思派人工智能(Artificial Intelligence,AI)自诞生以来,已经过约60年的发展。2006年深度学习算法的重大突破带来了人工智能的第三次爆发。同时也引发专利申请的激增,2006年至2016年,十年的…

MYSQL性能优化详解(二)

接着上一篇学习:http://www.cnblogs.com/quanzhiguo/p/6401453.html 七、MySQL数据库Schema设计的性能优化 高效的模型设计 适度冗余-让Query尽两减少Join 大字段垂直分拆-summary表优化 大表水平分拆-基于类型的分拆优化 统计表-准实时优化 合适的数据类型 时间存储…

python if else用法同一行_在Python的同一行中使用if else for和del吗?-问答-阿里云开发者社区-阿里云...

我有一个列表,其项目是可变长度的列表。如果这些可变长度的列表项超过此长度,则需要将其截断为特定长度(x)。我做了这个小的功能。def truncateList(batch_, trim_len):truncated_list []for eachAbstract in train_abstracts_encoded:if len(eachAbstr…

java no resultset_jdbc - Java ResultSet如何检查是否有任何结果

jdbc - Java ResultSet如何检查是否有任何结果结果集没有hasNext的方法。 我想检查resultSet是否有任何值这是正确的方法if (!resultSet.next() ) {System.out.println("no data");}kal asked 2019-02-19T19:16:57Z21个解决方案472 votes假设您正在使用新返回的Resul…

图解谷歌大脑丶城市大脑丶全球脑与互联网大脑的关系

人类很早就朦胧的发现社会组织具有神经系统的特征。19世纪到20世纪,一些前瞻的哲学家们开始不断将科技与脑进行了关联,提出了"器官映射","社会神经网络","全球脑"。 21世纪之后,更多科技大脑概念不断涌现,从互联网大脑到城市大脑,从谷…

Ubuntu 安装调整工具移动 Launcher 启动器位置

问题:如何将 Ubuntu 16.04 屏幕左侧的 Launcher 启动器由屏幕底部移动到屏幕左侧。 Ubuntu 16.04 最新的 unity-tweak-tool 工具,已经为用户提供了通过图形界面,实现上述 Launcher 启动器位置移动的功能。 1、在终端中执行: sudo …

python求助神器_python三大神器

Python 中有很多优秀的包,本文主要讲一下 pip, virtualenv, fabric1. pip 用来包管理1 #安装,可指定版本号2 (sudo) pip install Django1.6.834 #升级5 (sudo) pip install bpython --upgrade67 #一次安装多个8 (sudo) pip install BeautifulSoup4 fabri…