摘要: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. 使用python做一个IRC在线下载器

    使用python做一个IRC在线下载器 1.开发流程 2.软件流程 3.开始 3.0 准备工作 3.1寻找API接口 3.2 文件模块 3.2.1 选择文件弹窗 3.2.2 提取文件名 3.2.2.1 ...

  2. 如何制作sitemaps网站地图

    如何制作sitemaps网站地图 1.0 前言 1.1 xml格式 1.2 常见问题 本文资料来源于网站 1.0 前言 Sitemap 可方便网站管理员通知搜索引擎他们网站上有哪些可供抓取的网页.最简 ...

  3. 500 份源码合集——GitHub 热点速览 v.21.02

    作者:HelloGitHub-小鱼干 GitHub 项目名,如同变量命名,一个好的项目名能让你一眼就知道它是什么.500-AI-Machine-learning-Deep-learning-Compu ...

  4. 如何优雅的传递 stl 容器作为函数参数来实现元素插入和遍历?

    问题背景 开始正文之前,做一些背景铺垫,方便读者了解我的工程需求.我的项目是一个客户端消息分发中心,在连接上消息后台后,后台会不定时的给我推送一些消息,我再将它们转发给本机的其它桌面产品去做显示.后台 ...

  5. 笔记:学习go语言的网络基础库,并尝试搭一个简易Web框架

    在日常的 web 开发中,后端人员常基于现有的 web 框架进行开发.但单纯会用框架总感觉不太踏实,所以有空的时候还是看看这些框架是怎么实现的会比较好,万一要排查问题也快一些. 最近在学习 go 语言 ...

  6. 肌肤管家SkinRun V3S智能皮肤检测仪,用AI探索肌肤问题

    继肌肤管家SkinRun V3皮肤检测仪之后,肌肤管家SkinRun近期又一重磅推出的肌肤管家SkinRun V3S 智能肌肤测试仪引起了美业人的广泛关注.据了解它汇集百万皮肤数据,利用五光谱原理和人 ...

  7. 基于 MPI 的快速排序算法的实现

    完整代码: #include <iostream> #include <cstdlib> #include <ctime> #include <algorit ...

  8. CentOS | python3.7安装指南

    前言: centos系统本身默认安装有python2.x,版本x根据不同版本系统有所不同 可通过 python --V 或 python --version 查看系统自带的python版本 有一些系统 ...

  9. 简要MR与Spark在Shuffle区别

    一.区别 ①本质上相同,都是把Map端数据分类处理后交由Reduce的过程. ②数据流有所区别,MR按map, spill, merge, shuffle, sort, r educe等各阶段逐一实现 ...

  10. Memcached、Redis、Mongodb比较

    Memcached(内存Cache) Memcached 是一个高性能的分布式内存对象缓存系统.通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库 ...