您的位置:首页 > 编程语言 > Python开发

Python字符串方法详解

2019-03-21 13:11 225 查看

Python字符串集合了许多字符串相关的算法,以方法成员的方式提供接口,使用起来非常方便。 字符串方法大约有几十个,这些方法可以分为如下几类:填充、删减、变形、分切、连接、判定、查找、替换、编码。

填充

  • center(width(, fillchar))
    fillchar 参数指定了用以填充的字符,默认为空格
>>> print('ab'.center(4,'*'))
*ab*
>>> print('ab'.center(8))
ab
  • ljust(width(, fillchar))
    左对齐,后面填充
>>> print('py'.ljust(6,'*'))
py****
  • rjust(width[, fillchar])
    右对齐,前面填充
>>> print('py'.rjust(6,'*'))
****py
  • zfill(width)
    前方补0,若字符串前有+/-,则0填充在+/-之后
>>> print('ab'.zfill(6))
0000ab
>>> print('+ab'.zfill(6))
+000ab
  • expandtabs([tabsize])
    把字符串中的制表符(tab)转换为适当数量的空格,默认的tabsize为8

删减

  • strip([chars])
    移除两边的字符chars,默认为空白(空格,制表符,换行符)
>>> print('*abc*'.strip(('*')))
abc
  • lstrip([chars])
    移除左边的字符chars
>>> print(' abc*'.rstrip())
abc*
  • rstrip([chars])
    移除右边的字符chars

变形

  • lower()
    全部转换为小写
>>> print('ab XY'.title())
Ab Xy
  • upper()
    全部转换为大写
>>> print('ab XY'.upper())
AB XY
  • capitalize()
    转换为首字母大写,其他字母小写
>>> print('abc DE'.capitalize())
Abc de
  • swapcase()
    大小写互换
>>> print('abc XYZ'.swapcase())
ABC xyz
  • title()
    转换为个单词首字母大写
>>> print('ab XY'.title())
Ab Xy

str.casefold()
转换为大小写无关字符串比较的格式字符串

分切

  • partition(sep)
    接受一个字符串参数,并返回一个3个元素的 tuple 对象。如果sep没出现在母串中,返回值是 (sep, ‘’, ‘’);否则,返回值的第一个元素是 sep 左端的部分,第二个元素是 sep 自身,第三个元素是 sep 右端的部分。
>>> print('abcdef'.partition('cd'))
('ab', 'cd', 'ef')
>>> print('abcdef'.partition('g'))
('abcdef', '', '')
  • split([sep [,maxsplit]])
    参数 maxsplit 是分切的次数,即最大的分切次数,所以返回值最多有 maxsplit+1 个元素
>>> ' hello   world!'.split()
['hello', 'world!']
>>> ' hello   world!'.split(' ')
['', '', 'hello', '', '', 'world!']

连接

  • join(seq)
    将可迭代的字符串序列连接成一条长字符串
>>> conf = {'host':'127.0.0.1',
'db':'spam',
'user':'sa',
'passwd':'eggs'}
>>> ';'.join("%s=%s"%(k, v) for k, v in conf.iteritems())
'passswd=eggs;db=spam;user=sa;host=127.0.0.1'

判定

以下方法较为简单,就不再用代码阐述

  • isalnum()
    是否全为字母或数字

  • isalpha()
    是否全为字母

  • isdigit()
    是否全为数字(0~9)

  • islower()
    是否全部为小写

  • isupper()
    是否全部为大写

  • isspace()
    判断字符是否是空白字符,没有任何字符不算是空白

  • istitle()
    是否为标题,即各单词首字母大写,不允许非首字母大写

  • isidentifier()
    是否满足标识符定义规则

  • isprintable()
    是否可打印字符(制表符、换行符就不是可打印字符,但空格是)

  • endswith(suffix[,start[, end]])
    检查字符串str是否以suffix结尾,返回True和False,suffix可以是一个元组(tuple)。可以指定起始start和结尾end的搜索位置。

>>> print('abcdef'.endswith('ef'))
True
>>>print('abcxyz'.endswith('xyz',0,5))
False			#搜索范围为‘’abcxy‘’
  • startswith(prefix[, start[, end]])
    同理用来判断字符串是否以prefix开头
>>> print('abcdef'.startswith(('a','ef')))
True				#元组中只要有一个正确则True

查找

  • count( sub[, start[, end]])
    返回字符串中子串sub出现的次数,可以指定起始与结束位置,索引从0开始,不包括end边界
>>> print('xyabxyxy'.count('xy',1,8))
2
  • find( sub[, start[, end]])
    搜索字符串S中是否包含子串sub,若包含则返回sub的索引位置,否则返回-1,可指定起始和结束的搜索位置
>>> print('abcxyzXY'.find('xy'))
3
>>> print('abcxyzXY'.find('xy',4))
-1
  • index( sub[, start[, end]])
    与find()一样,唯一不同在于找不到子串时,返回ValueError错误

  • rfind( sub[, start[,end]])
    返回搜索到的最右边的子串位置,如果只搜索到1个或没有搜索到子串时,和find()是等价的

>>> print('xyzabcabc'.rfind('bc'))
7
  • rindex( sub[, start[, end]])
    同上

替换

  • replace(old, new[,count])
    将字符串中的子串old替换为new字符串,若给定count,则只替换前count个的old子串,如果搜索不到子串old,则返回字符串S
>>> print('abcxyzoxy'.replace('xy','XY'))
abcXYzoXY
>>> print('abcxyzoxy'.replace('mn','XY',1))
abcxyzoxy

编码

  • encode([encoding[,errors]])

  • decode([encoding[,errors]])

这是一对互逆操作的方法,用以编码和解码字符串。因为str是平台相关的,它使用的内码依赖于操作系统环境,而unicode是平台无关的,是Python内部的字符串存储方式。unicode可以通过编码(encode)成为特定编码的str,而str也可以通过解码(decode)成为unicode。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: