首页
学习
活动
专区
工具
TVP
发布

python字符串方法大全

python中字符串对象提供了很多方法来操作字符串,功能相当丰富。

这些方法的使用说明见 官方文档:string methods ,本文对它们进行详细解释,各位以后可将本文当作手册。

这里没有模式匹配(正则)相关的功能。python中要使用模式匹配相关的方法操作字符串,需要 import re 导入re模块。关于正则模式匹配,参见: re Module Contents 。

注意,python中 字符串是不可变对象 ,所以所有修改和生成字符串的操作的实现方法都是另一个内存片段中新生成一个字符串对象。例如, 'abc'.upper() 将会在划分另一个内存片段,并将返回的 ABC 保存在此内存中。

下文出现的"S"表示待操作的字符串。本文没有对 casefold,encode,format,format_map 进行介绍,前两者和unicode有关,后两者内容有点太多。

1.大小写转换1.1 lower、upper

返回S字符串的小写、大写格式。(注意,这是新生成的字符串,在另一片内存片段中,后文将不再解释这种行为)

例如:

1.2 title、capitalize

前者返回S字符串中所有单词首字母大写且其他字母小写的格式,后者返回首字母大写、其他字母全部小写的新字符串。

例如:

1.3 swapcase

swapcase() 对S中的所有字符串做大小写转换(大写-->小写,小写-->大写)。

2.isXXX判断2.1 isalpha,isdecimal,isdigit,isnumeric,isalnum

测试字符串S是否是数字、字母、字母或数字。对于非Unicode字符串,前3个方法是等价的。

例如:

2.2 islower,isupper,istitle

判断是否小写、大写、首字母大写。要求S中至少要包含一个字符串字符,否则直接返回False。例如不能是纯数字。

注意, istitle() 判断时会对每个单词的首字母边界判断。例如, word1 Word2 、 word1_Word2 、 word1()Word2 中都包含两个单词,它们的首字母都是"w"和"W"。因此,如果用 istitle() 去判断它们,将返回False,因为 w 是小写。

例如:

# 下面的返回False,因为非首字母C不是小写

2.3 isspace,isprintable,isidentifier

分别判断字符串是否是空白(空格、制表符、换行符等)字符、是否是可打印字符(例如制表符、换行符就不是可打印字符,但空格是)、是否满足标识符定义规则。

例如:

判断是否为空白。没有任何字符是不算是空白。

判断是否是可打印字符。

判断是否满足标识符定义规则。

标识符定义规则为:只能是字母或下划线开头、不能包含除数字、字母和下划线以外的任意字符。

3.填充3.1 center

将字符串居中,左右两边使用fillchar进行填充,使得整个字符串的长度为width。fillchar默认为空格。如果width小于字符串的长度,则无法填充直接返回字符串本身(不会创建新字符串对象)。

例如:

使用下划线填充并居中字符串

使用默认的空格填充并居中字符串

width小于字符串长度

3.2 ljust和rjust

ljust() 使用fillchar填充在字符串S的右边,使得整体长度为width。 rjust() 则是填充在左边。如果不指定fillchar,则默认使用空格填充。

如果width小于或等于字符串S的长度,则无法填充,直接返回字符串S(不会创建新字符串对象)。

例如:

3.3 zfill

用0填充在字符串S的左边使其长度为width。如果S前右正负号 +/- ,则0填充在这两个符号的后面,且符号也算入长度。

如果width小于或等于S的长度,则无法填充,直接返回S本身(不会创建新字符串对象)。

4.子串搜索4.1 count

返回字符串S中子串sub出现的次数,可以指定从哪里开始计算(start)以及计算到哪里结束(end),索引从0开始计算,不包括end边界。

例如:

# 次数2,因为从index=1算起,即从'y'开始查找,查找的范围为'yabxyxy'

# 次数1,因为不包括end,所以查找的范围为'yabxyx'

# 次数2,因为查找的范围为'yabxyxy'

4.2 endswith和startswith

endswith() 检查字符串S是否已suffix结尾,返回布尔值的True和False。suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索边界。

同理 startswith() 用来判断字符串S是否是以prefix开头。

例如:

suffix是普通的字符串时。

# False,因为搜索范围为'yz'

# False,因为搜索范围为'abcxy'

suffix是元组(tuple)时,只要tuple中任意一个元素满足endswith的条件,就返回True。

# tuple中的'xyz'满足条件

# tuple中'ab'和'xy'都不满足条件

# tuple中的'z'满足条件

4.3 find,rfind和index,rindex

find()搜索字符串S中是否包含子串sub,如果包含,则返回sub的索引位置,否则返回"-1"。可以指定起始start和结束end的搜索位置。

index()和find()一样,唯一不同点在于当找不到子串时,抛出 ValueError 错误。

rfind()则是返回搜索到的最右边子串的位置,如果只搜索到一个或没有搜索到子串,则和find()是等价的。

同理rindex()。

例如:

可以使用 in 操作符来判断字符串S是否包含子串sub,它返回的不是索引位置,而是布尔值。

5.替换5.1 expandtabs

将字符串S中的 \t 替换为一定数量的空格。默认N=8。

注意, expandtabs(8) 不是将 \t 直接替换为8个空格。例如 'xyz\tab'.expandtabs() 会将 \t 替换为5个空格,因为"xyz"占用了3个字符位。

另外,它不会替换换行符( \n 或 \r )时。

例如:

5.2 translate和maketrans

str.maketrans() 生成一个字符一 一映射的table,然后使用 translate(table) 对字符串S中的每个字符进行映射。

如果你熟悉Linux,就知道tr命令,translate()实现的功能和tr是类似的。

例如,现在想要对"I love fairy"做一个简单的加密,将里面部分字符都替换为数字,这样别人就不知道转换后的这句话是什么意思。

注意, maketrans(x[, y[, z]]) 中的x和y都是字符串,且长度必须相等。

如果 maketrans(x[, y[, z]]) 给定了第三个参数z,这这个参数字符串中的每个字符都会被映射为None。

例如,不替换"o"和"y"。

6.分割6.1 partition和rpartition

搜索字符串S中的子串sep,并从sep处对S进行分割,最后返回一个包含3元素的元组:sep左边的部分是元组的第一个元素,sep自身是元组的二个元素,sep右边是元组的第三个元素。

partition(sep) 从左边第一个sep进行分割, rpartition(sep) 从右边第一个sep进行分割。

如果搜索不到sep,则返回的3元素元组中,有两个元素为空。partition()是后两个元素为空,rpartition()是前两个元素为空。

例如:

6.2 split、rsplit和splitlines

都是用来分割字符串,并生成一个列表。

split() 根据sep对S进行分割,maxsplit用于指定分割次数,如果不指定maxsplit或者给定值为"-1",则会从做向右搜索并且每遇到sep一次就分割直到搜索完字符串。如果不指定sep或者指定为None,则改变分割算法:以空格为分隔符,且将连续的空白压缩为一个空格。

rsplit() 和 split() 是一样的,只不过是从右边向左边搜索。

splitlines()用来专门用来分割换行符。虽然它有点像 split('\n') 或 split('\r\n') ,但它们有些区别,见下文解释。

首先是split()的示例分析( rsplit() 示例略)。

再是splitlines()的示例分析。

splitlines() 中可以指定各种换行符,常见的是 \n 、 \r 、 \r\n 。如果指定keepends为True,则保留所有的换行符。

7.join

将可迭代对象(iterable)中的字符串使用S连接起来。注意,iterable中必须全部是字符串类型,否则报错。

如果你还是python的初学者,还不知道iterable是什么,却想来看看join的具体语法,那么你可以暂时将它理解为:字符串string、列表list、元组tuple、字典dict、集合set。

例如:

1.字符串

2.元组

3.集合。注意,集合无序。

4.列表

5.字典

6.iterable参与迭代的部分必须是字符串类型,不能包含数字或其他类型。

以下两种也不能join。

8.修剪:strip、lstrip和rstrip

分别是移除左右两边、左边、右边的字符char。如果不指定chars或者指定为 None ,则默认移除空白(空格、制表符、换行符)。

唯一需要注意的是,chars可以是多个字符序列。在移除时,只要是这个序列中的字符,都会被移除。

例如:

1.移除单个字符或空白。

2.移除字符中的字符。

作者:骏马金龙

出处:http://www.cnblogs.com/f-ck-need-u/

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180604A13QTO00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券