Python string模块经常使用方法

前言

我的觉的字符串处理是每一门编程语言的很是重要的基本功。 熟练处理运用这些方法处理字符串能节省大量时间。(谁让我菜呢) 下面是记录的一些经常使用的方法,之后遇到可能会慢慢补充。java

String模块中

>>> import string
>>> dir(string)
['Formatter', 'Template', '_TemplateMetaclass', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_float', '_idmap', '_idmapL', '_int', '_long', '_multimap', '_re', 'ascii_letters', 'ascii_lowercase', 'ascii_uppercase', 'atof', 'atof_error', 'atoi', 'atoi_error', 'atol', 'atol_error', 'capitalize', 'capwords', 'center', 'count', 'digits', 'expandtabs', 'find', 'hexdigits', 'index', 'index_error', 'join', 'joinfields', 'letters', 'ljust', 'lower', 'lowercase', 'lstrip', 'maketrans', 'octdigits', 'printable', 'punctuation', 'replace', 'rfind', 'rindex', 'rjust', 'rsplit', 'rstrip', 'split', 'splitfields', 'strip', 'swapcase', 'translate', 'upper', 'uppercase', 'whitespace', 'zfill']

help(string.你想要了解的方法)

字符串填充

四个方法:python

  • s.center() | center(s, width[, fillchar])
  • s.ljust() | ljust(s, width[, fillchar])
  • s.rjust() | rjust(s, width[, fillchar])
  • s.zfill() | zfill(s, width[, fillchar])
  • s表明字符串,width表明字符串的长度,fillchar表明填充的字符,都是返回填充后的字符串,s不变
>>>"abc".center(5,'-') #用-填充,字符串在中间
'-abc-'
>>>"abc".ljust(5,'-') #用-填充,字符串在左边
'abc--'
>>>"abc".rjust(5,'-') #用-填充,字符串在右边
'--abc'
>>>"abc".zfill(5)   #0值填充,字符串在右边
'00abc'

大小写转换

  • str.lower() #把字母转成小写
  • str.upper() #把字母转成大写
  • str.swapcase() #大小写互换
  • str.capitalize() #句子首字母大写
  • str.title() #每一个单词首字母大写
>>> import string
>>> str = "Python"
>>> str.lower()
'python'
>>> str.upper()
'PYTHON'
>>> str.swapcase()
'pYTHON'
>>> str.title()
'Python Is Good'

字符串判断(返回布尔值)

  • str.isalpha() #是否全是字母,并至少有一个字符
  • str.isdigit() #是否全是数字,并至少有一个字符
  • str.isspace() #是否全是空白字符,并至少有一个字符
  • str.islower() #字母是否全是小写
  • str.isupper() #字母是否即是大写
  • str.istitle() #是不是首字母大写的,不容许其余字母大写!
  • str.startwith(prefix[,start[,end]])#是否以prefix开头
  • str.endwith(suffix[,start[,end]]) #以suffix结尾
  • 简单的查询是否存在在目标串中能够用in判断
自行尝试

string模块的常量

  • string.digits #数字0~9
  • string.letters #全部字母(大小写)
  • string.lowercase #全部小写字母
  • string.uppercase #全部大写字母
  • string.printable #可打印字符的字符串
  • string.punctuation #全部标点
>>> import string
>>> string.digits
'0123456789'
>>> string.letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.lowercase
'abcdefghijklmnopqrstuvwxyz'
>>> string.uppercase
'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
>>> string.printable
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~ \t\n\r\x0b\x0c'
>>> string.punctuation
'!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
>>>
看起来很是有用哦,之前都是一个一个打。。。

字符串查找

  • str.find(substr, [start, [end]]) //返回str中出现substr的第一个字母的标号,若是str中没有substr则返回-1。start和end做用就至关于在str[start:end]中搜索。
  • str.rfind(substr, [start, [end]]) //返回str中最后出现的substr的第一个字母的标号,若是str中没有substr则返回-1,也就是说从右边算起的第一次出现的。
  • str.index(substr, [start, [end]]) //与find()相同,只是在str中没有substr时,会返回一个运行时错误
  • str.rindex(substr, [start, [end]]) //与rfind()相同,只是在str中没有substr时,会返回一个运行时错误
  • str.count(substr, [start, [end]]) //计算substr在str中出现的次数
自行测试

字符串的分割和组合

  • str.split([sep, [maxsplit]]) //以sep为分隔符,把str分红一个list。maxsplit表示分割的次数。默认的分割符为空白字符。
  • str.rsplit([sep, [maxsplit]])
  • str.splitlines([keepends]) //这俩个貌似效果同样,都是把str按照行分割符分为一个list,keepends是一个bool值,若是为真每行后而会保留行分割符。
  • str.join(seq) //官方解释:Return a string composed of the words in list, with intervening occurrences of sep. The default separator is a single space.//就是将数组链接成字符串返回
>>> str = "PQ is a fool"
>>> str.split()
['PQ', 'is', 'a', 'fool']
>>> str2 = str.split()
>>> '-'.join(str2) #用'-'链接字符串
'PQ-is-a-fool'
>>> '-'.join(str2,2)
>>> str3 = "PQ\ris\na\nfool"
>>> str3
'PQ\ris\na\nfool'
>>> str3.rsplit()
['PQ', 'is', 'a', 'fool']
>>> str3.splitlines() #看来默认是False
['PQ', 'is', 'a', 'fool']
>>> str3.splitlines(True)
['PQ\r', 'is\n', 'a\n', 'fool']
>>>

替换处理

  • string.replace(oldstr, newstr, [count]) //把string中的oldstar替换为newstr,count为替换次数。
  • string.strip([chars]) //把string中左右两边包含chars中有的字符所有去掉,默认去掉空格
  • string.lstrip([chars]) //把string中左边包含chars中有的字符所有去掉
  • string.rstrip([chars]) //把str中右边包含chars中有的字符所有去掉
  • string.expandtabs([tabsize]) //把string中的tab字符替换没空格,每一个tab替换为tabsize个空格,默认是2个?(我这里是两个)
>>> string = "  python   "
>>> string.replace('python','java') #将'python'替换成'java'
'  java   '
>>> string.strip()      #去掉了两边的空格(空字符应该均可以,默认的)
'python'
>>> string.rstrip()     #去掉右边的空字符
'  python'
>>> string.lstrip()     #去掉左边的空字符
'python   '
>>> string = "python\t"
>>> string
'python\t'
>>> string.expandtabs()     #将tab换成了两个空格
'python  '
>>> string.expandtabs(6)    #将tab换成了六个空格
'python      '

字符串转数字

  • string.atoi(str[,base]) #将字符串做为base进制进行转换,默认将字符串认为是十进制,都会转换成十进制
  • string.atof(str) #将str转换成浮点型数字
>>> import string
>>> s = '233'
>>> string.atoi(s)      #将字符串转换成十进制数字
233
>>> string.atoi(s,16)   #将字符串看成16进制转换成十进制数字
563
>>> string.atof(s)      #将字符串转换成浮点数
233.0
>>> s = '0xff'
>>> string.atoi(s,16)   #将16进制字符串转换成十进制数字
255
>>> s = '123'           #将字符串转换成长整型
>>> atol(s)
123L
>>>

小技巧

  1. 倒序字符串
>>> string = 'python'
>>> string[::-1]
'nohtyp'
  1. 固定长度分割字符串
>>> import re
>>> string
'python'
>>> re.findall(r'.{1,3}',string)
['pyt', 'hon']
  1. 字符串链接
使用'+'号链接n个字符串须要申请n-1次内存
使用join()须要申请1次内存
  1. 数字字符之间的转换
>>> str(233)    #将整数转换成字符串
'233'
>>> chr(97)     #将整数转换成ASCII字符
'a'
>>> ord('a')    #将字符转换成ASCII码整数
97