3.4 字符串方法

前面介绍了列表的方法,而字符串的方法要多得多,因为其很多方法都是从模块string那里“继承”而来的。(在较早的Python版本中,这些方法为模块string中的函数。如果需要,现在依然能够找到这些函数。)

字符串的方法太多了,这里只介绍一些最有用的。完整的字符串方法清单请参阅附录B。这里描述字符串的方法时,将列出其他相关的方法。如果这些相关方法在本章做了介绍,将用“另请参见”标识,否则用“附录B”标识。

模块string未死

虽然字符串方法完全盖住了模块string的风头,但这个模块包含一些字符串没有的常量和函数。下面就是模块string中几个很有用的常量①。

 string.digits:包含数字0~9的字符串。

 string.ascii_letters:包含所有ASCII字母(大写和小写)的字符串。

 string.ascii_lowercase:包含所有小写ASCII字母的字符串。

 string.printable:包含所有可打印的ASCII字符的字符串。

 string.punctuation:包含所有ASCII标点字符的字符串。

 string.ascii_uppercase:包含所有大写ASCII字母的字符串。

虽然说的是ASCII字符,但值实际上是未解码的Unicode字符串。

3.4.1 center

方法center通过在两边添加填充字符(默认为空格)让字符串居中。

>>> "The Middle by Jimmy Eat World".center(39)

' The Middle by Jimmy Eat World '

>>> "The Middle by Jimmy Eat World".center(39, "*")

'*****The Middle by Jimmy Eat World*****'

附录B: ljust、 rjust和zfill。

3.4.2 find

方法find在字符串中查找子串。如果找到,就返回子串的第一个字符的索引,否则返回-1。

>>> 'With a moo-moo here, and a moo-moo there'.find('moo')

7

>>> title = "Monty Python's Flying Circus"

>>> title.find('Monty')

>>> title.find('Python')

6

>>> title.find('Flying')

15

>>> title.find('Zirquss')

-1

第2章初识成员资格时,我们在垃圾邮件过滤器中检查主题是否包含'$$$'。这种检查也可使用find来执行。(在Python 2.3之前的版本中,这种做法也管用,但in只能用于检查单个字符是否包含在字符串中。)

>>> subject = '$$$ Get rich now!!! $$$'

>>> subject.find('$$$')

注意 字符串方法find返回的并非布尔值。如果find像这样返回0,就意味着它在索引0处找到了指定的子串。

你还可指定搜索的起点和终点(它们都是可选的)。

>>> subject = '$$$ Get rich now!!! $$$'

>>> subject.find('$$$')

>>> subject.find('$$$', 1) # 只指定了起点

20

>>> subject.find('!!!')

16

>>> subject.find('!!!', 0, 16) # 同时指定了起点和终点

-1

请注意,起点和终点值(第二个和第三个参数)指定的搜索范围包含起点,但不包含终点。这是Python惯常的做法。

附录B: rfind、 index、 rindex、 count、 startswith、 endswith。

3.4.3 join

如你所见,所合并序列的元素必须都是字符串。注意到在最后两个示例中,我使用了一系列目录,并按UNIX和DOS/Windows的约定设置其格式:通过使用不同的分隔符(并在DOS版本中添加了盘符)。

另请参见: split。

3.4.4 lower

方法lower返回字符串的小写版本。

>>> 'Trondheim Hammer Dance'.lower()

'trondheim hammer dance'

在你编写代码时,如果不想区分字符串的大小写(即忽略大小写的差别),这将很有用。例如,假设你要检查列表中是否包含指定的用户名。如果列表包含字符串'gumby',而指定的用户名为'Gumby',你将找不到它。

>>> if 'Gumby' in ['gumby', 'smith', 'jones']: print('Found it!')

...

>>>

当然,如果列表包含'Gumby',而指定的用户名为'gumby'或'GUMBY',结果同样找不到。对于这种问题,一种解决方案是在存储和搜索时,将所有的用户名都转换为小写。这样做的代码类似于下面这样:

>>> name = 'Gumby'

>>> names = ['gumby', 'smith', 'jones']

>>> if name.lower() in names: print('Found it!')

...

Found it!

>>>

另请参见: islower、 istitle、 isupper、 translate。

附录B: capitalize、 casefold、 swapcase、 title、 upper。

3.4.5 replace

方法replace将指定子串都替换为另一个字符串,并返回替换后的结果。

>>> 'This is a test'.replace('is', 'eez')

'Theez eez a test'

如果你使用过字处理程序的“查找并替换”功能,一定知道这个方法很有用。

另请参见: translate。附录B: expandtabs。

3.4.6 split

split是一个非常重要的字符串方法,其作用与join相反,用于将字符串拆分为序列。

>>> '1+2+3+4+5'.split('+')

['1', '2', '3', '4', '5']

>>> '/usr/bin/env'.split('/')

['', 'usr', 'bin', 'env']

>>> 'Using the default'.split()

['Using', 'the', 'default']

注意,如果没有指定分隔符,将默认在单个或多个连续的空白字符(空格、制表符、换行符等)处进行拆分。

另请参见: join。

附录B: partition、 rpartition、 rsplit、 splitlines。

3.4.7 strip

方法strip将字符串开头和末尾的空白(但不包括中间的空白)删除,并返回删除后的结果。

>>> ' internal whitespace is kept '.strip()

'internal whitespace is kept'

与lower一样,需要将输入与存储的值进行比较时, strip很有用。回到前面介绍lower时使用的用户名示例,并假定用户输入用户名时不小心在末尾加上了一个空格。

>>> names = ['gumby', 'smith', 'jones']

>>> name = 'gumby '

>>> if name in names: print('Found it!')

...

>>> if name.strip() in names: print('Found it!')

...

Found it!

>>>

你还可在一个字符串参数中指定要删除哪些字符。

>>> '*** SPAM * for * everyone!!! ***'.strip(' *!')

'SPAM * for * everyone

这个方法只删除开头或末尾的指定字符,因此中间的星号未被删除。

附录B: lstrip、 rstrip。

3.4.8 translate

方法translate与replace一样替换字符串的特定部分,但不同的是它只能进行单字符替换。这个方法的优势在于能够同时替换多个字符,因此效率比replace高。

这个方法的用途很多(如替换换行符或其他随平台而异的特殊字符),但这里只介绍一个比较简单(也有点傻)的示例。假设你要将一段英语文本转换为带有德国口音的版本,为此必须将字符c和s分别替换为k和z。

然而,使用translate前必须创建一个转换表。这个转换表指出了不同Unicode码点之间的转换关系。要创建转换表,可对字符串类型str调用方法maketrans,这个方法接受两个参数:两个长度相同的字符串,它们指定要将第一个字符串中的每个字符都替换为第二个字符串中的相应字符①。就这个简单的示例而言,代码类似于下面这样:

>>> table = str.maketrans('cs', 'kz')

如果愿意,可查看转换表的内容,但你看到的只是Unicode码点之间的映射。

>>> table

创建转换表后,就可将其用作方法translate的参数。

>>> 'this is an incredible test'.translate(table)

'thiz iz an inkredible tezt'

调用方法maketrans时,还可提供可选的第三个参数,指定要将哪些字母删除。例如,要模仿语速极快的德国口音,可将所有的空格都删除。

>>> table = str.maketrans('cs', 'kz', ' ')

>>> 'this is an incredible test'.translate(table)

'thizizaninkredibletezt'

另请参见: replace、 lower。

3.4.9 判断字符串是否满足特定的条件

很多字符串方法都以is打头,如isspace、 isdigit和isupper,它们判断字符串是否具有特定的性质(如包含的字符全为空白、数字或大写)。如果字符串具备特定的性质,这些方法就返回True,否则返回False。

附录B: isalnum、 isalpha、 isdecimal、 isdigit、 isidentifier、 islower、 isnumeric、isprintable、 isspace、 istitle、 isupper。

python3.4教程_Python基础教程3.4 字符串方法相关推荐

  1. spyderpython使用教程_Python基础教程—Spyder简介和Python版本

    选择Spyder作为Python开发的集成开发环境(安装教程参加文末链接).它综合了开发工具的高级编辑,性能分析,调试和分析功能与数据探索等功能. 1.Spyder工作页面介绍 Spyder的界面设计 ...

  2. python基础案例教程_python基础教程 10-11例子如何执行

    展开全部 10. 模块相关 Python的标准安装包包括一组模块,称为标准库(standard library). 10.1 模块 10.1.1 模块是程序 # hello.pyprint " ...

  3. pythonfile操作教程_Python基础教程之文件操作

    课程简介 打印到屏幕 最简单的输出方法使用print语句,你可以给他传递零个或多个用逗号隔开的表达式.或者使用占位符 读取键盘输入 Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入 ...

  4. python总结教程_python基础教程总结10——文件

    1.打开文件 open(name[mode[,buffing])    参数:  文件,模式,缓冲 1)name: 是强制选项,模式和缓冲是可选的 #如果文件不在,会报下面错误 1 >>& ...

  5. python基础案例教程_Python基础教程 两个经典案例:阶乘和幂

    6.6.1 两个经典案例:阶乘和幂 本节探讨两个经典的递归函数.首先,假设你要计算数字n的阶乘. n的阶乘为n × (n1) × (n 2) × - × 1,在数学领域的用途非常广泛.例如,计 ...

  6. pythonpdf教程_python基础教程pdf

    Python 学习路线图 一. Python 学习的四个阶段 ➢ 第一阶段 该阶段首先通过介绍不同领域的三种操作系统,操作系统的发展简史以及 Linux 系统的文件目录结构让大家对 Linux 系统有 ...

  7. 视频教程-快速入门Python基础教程_Python基础进阶视频-Python

    快速入门Python基础教程_Python基础进阶视频 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥199.00 立 ...

  8. 视频教程-快速入门Python基础教程_Python基础知识大全-Python

    快速入门Python基础教程_Python基础知识大全 十余年计算机技术领域从业经验,在中国电信.盛大游戏等多家五百强企业任职技术开发指导顾问,国内IT技术发展奠基人之一. 杨千锋 ¥99.00 立即 ...

  9. 全国电子商务人才专业化从业认证考试初级教程(公共基础教程)(全国电子商务人才丛业能力教育指定教材)

    书名:<全国电子商务人才专业化从业认证考试初级教程(公共基础教程)>(全国电子商务人才丛业能力教育指定教材) 作者:单兴华 组编:全国电子商务人才从业能力教育项目管理办公室 出版社:中国人 ...

  10. [转载]VBS入门教程 VBS基础教程

    [转载]VBS入门教程 VBS基础教程(收藏) VBS基础教程 VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. Microsoft Visual Basic是微软公司 ...

最新文章

  1. oracle 安装grid补丁,安装oracle 11.2.0.4.4的psu补丁过程
  2. 人脸对齐--Dense Face Alignment
  3. 下一个视觉「杀手级应用」来了,依图行人重识别ReID性能创纪录
  4. 函数声明(函数原型)的一些关键技巧
  5. hdu 2461(线段树求面积并)
  6. python2.7.12操作Hbase
  7. [渝粤教育] 中国地质大学 信息资源管理 复习题 (2)
  8. python中ix用法_Python中使用ix的数据帧子集
  9. .NET Core应用程序的2种部署方式
  10. mysql 常用存储引擎InnoDBMyISAM表格对比
  11. 贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
  12. 两万字详解MongoDB从入门到精通
  13. android md5加密工具下载,md5校验工具下载
  14. RYYB图像格式学习
  15. sql 中判断身份证男女等
  16. 老公分不到股份?问题根源是创业者人才观缺失
  17. 个人作业--数组之首尾相连
  18. Unity 2D游戏制作流程用到的技巧
  19. 非单射一致性和单射一致性的概念辨析
  20. 2.1、用JsonParser解析json树模型

热门文章

  1. 使用Spark core和SparkSQL的窗口函数分别实现分组取topN的操作
  2. 一步一步写一个简单通用的makefile(一)
  3. 数据结构与算法之递归和分治思想
  4. 《Cisco安全防火墙服务模块(FWSM)解决方案》——2.6 硬件架构
  5. 关于远程访问tomcat问题的总结
  6. Instruments-Automation: 通过命令行执行测试用例
  7. 使用wget抓取网站资源
  8. DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)
  9. C++ 从零单排(2)-基础知识二
  10. Delphi程序结构