摘要: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. 使用 squid 共享 虚拟专用网至局域网

    最近要出差,但是公司代码放在内网环境,平时在公司使用没问题,如果不在公司,就要拨 虚拟网络以下简称:V网. 但是公司给的 V网,并不是那种,直接用系统自带的网络连接,就可以连接上的,需要装一个软件,登 ...

  2. Tomca7t服务器 配置HTTP和HTTPS 同时访问

    (首先你要有 ssl 证书 ,我是阿里的 ) 查看申请ssl证书(https://www.cnblogs.com/lxf-mw/p/14261303.html) 一.下载 tomcat证书(两个文件) ...

  3. NTP服务解析

    ······[NTP服务概述] NTP(Network Time Protocol)服务主要用于同步服务器时间. nptd 可以运行在多种模式下,包括对称的 主动.被动(active/passive) ...

  4. 一文搞懂MySQL前缀索引

    引入 通常在开发中我们需要定义字符串类型的字段,例如用户名或者用户邮箱等. 假设我们在维护一个用户登录系统,用户表的定义: create table User( ID bigint unsigned ...

  5. Promethues 之 Thanos

    Promethues简介和原理 请看我之前写的 Prometheus简介,原理和安装 https://www.cnblogs.com/you-men/p/12839535.html 官方架构问题 官方 ...

  6. Python基础语法5-控制流语句

  7. 日常采坑:.NET Core SDK版本问题

    1..NetCore SDK版本问题 .NetCore3.1 webapi 部署linux,遇到一个坑,开启的目录浏览功能失效,几番尝试发现是版本问题.本地sdk版本与linux安装的sdk版本不对应 ...

  8. 【Java】面向对象 - 封装

    继承 封装 多态 重新搞一波 复习巩固 简单记录 慕课网 imooc Java 零基础入门-Java面向对象-Java封装 封装 封装是什么? 将类的某些信息隐藏在类内部,不允许外部程序直接访问 通过 ...

  9. os-Bytes环境变量劫持

    信息收集 netdiscovery -i eth0 nmap -sV -sC 192.168.43.74 -oA os-Bytes gobuster -u 192.168.43.74 -w /usr/ ...

  10. python中IF语句容易犯的错误CASE

    python中没有switch   case类似的语句,但是下面的IF语句却与之类似,却又不同: A = B = C = D = E = 1 if A == 1: B=2 elif B ==2: C= ...