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

 

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

 

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

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

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

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

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

 

capitalize() vs title()

 

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

casefold() vs lower()

 

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

 

upper() vs swapcase()

 

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

字符串方法之:真值检测

istitle() vs islower() vs isupper()

 

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

 

isalnum() vs isalpha() 

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

isdecimal() vs isdigit() vs isnumeric()

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

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

字符串方法之:增删查改

 

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

增:zfill()

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

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

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

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

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

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

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

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

 

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

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

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

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

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

零基础如何使用python处理字符串?的更多相关文章

  1. 零基础快速掌握Python系统管理视频课程【猎豹网校】

    点击了解更多Python课程>>> 零基础快速掌握Python系统管理视频课程[猎豹网校] 课程目录 01.第01章 Python简介.mp4 02.第02章 IPython基础.m ...

  2. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  3. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  4. 零基础如何入门Python

    编程零基础如何学习Python 如果你是零基础,注意是零基础,想入门编程的话,我推荐你学Python.虽然国内基本上是以C语言作为入门教学,但在麻省理工等国外大学都是以Python作为编程入门教学的. ...

  5. 如何零基础开始自学Python编程

    转载——原作者:赛门喵 链接:https://www.zhihu.com/question/29138020/answer/141170242 0. 明确目标 我是真正零基础开始学Python的,从一 ...

  6. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  7. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  8. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  9. 零基础自学用Python 3开发网络爬虫

    原文出处: Jecvay Notes (@Jecvay) 由于本学期好多神都选了Cisco网络课, 而我这等弱渣没选, 去蹭了一节发现讲的内容虽然我不懂但是还是无爱. 我想既然都本科就出来工作还是按照 ...

随机推荐

  1. linux的 复制 删除 解压 压缩 打包

    liunx 删除 删除文件夹实例: rm -rf /var/log/httpd/access 将会删除/var/log/httpd/access目录以及其下所有文件.文件夹 2 删除文件使用实例: r ...

  2. requests+BeautifulSoup | 爬取电影天堂全站电影资源

    import requests import urllib.request as ur from bs4 import BeautifulSoup import csv import threadin ...

  3. XSS类型,防御及常见payload构造总结

    什么是XSS? XSS全称是Cross Site Scripting即跨站脚本,当目标网站目标用户浏览器渲染HTML文档的过程中,出现了不被预期的脚本指令并执行时,XSS就发生了. 最直接的例子:&l ...

  4. 敏感信息泄露 - Pikachu

    概述: 由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到. 比如:---通过访问url下的目录,可以直接列出目录下的文件列表;---输入错误的url参数后报错信息里面包含 ...

  5. 算法模板 - C++ 高精度运算

    C++算法板子 高精度 高精度推荐用python来写,python有大整数,这里写的是关于C++的高精度运算模板 1.高精 * 低精 #include <iostream> #includ ...

  6. 手动验证MySQL Innodb RR级别加锁 需要注意的几个点

    记录几个坑 优化器在表行数比较少的时候 会使用全表扫描,会造成全表所有的行加锁,所以需要使用force index 强制使用索引 来实现gap-lock(间隙锁)的应用 next-lock 加锁 会锁 ...

  7. ELK一个优秀的日志收集、搜索、分析的解决方案

    1 什么是ELK? ELK,是Elastaicsearch.Logstash和Kibana三款软件的简称.Elastaicsearch是一个开源的全文搜索引擎.Logstash则是一个开源的数据收集引 ...

  8. uni-app开发经验分享十四:小程序超过2M限制的方法——分包加载

      起初小程序上线时,微信限制了代码包不能超过1MB,后来功能变大变成了2M了,限制大小是出于对小程序启动速度的考虑,希望用户在使用任何一款小程序时,都能获得一种"秒开"体验.但是 ...

  9. 【故障公告】K8s CofigMap 挂载问题引发网站故障

    今天凌晨我们用阿里云服务器自建的 kubernetes 集群出现突发异常情况,博客站点(blog-web)与博客 web api(blog-api)的 pod 无法正常启动(CrashLoopBack ...

  10. Spring Security 实战干货:分布式对象SharedObject

    1. 前言 在上一篇我们对AuthenticationManager的初始化的细节进行了分析,其中里面有一段代码引起了不少同学的注意: ApplicationContext context = htt ...