ycvodzf 发表于 2015-11-30 09:13:20

python中string模块各属性以及函数的用法

任何语言都离不开字符,那就会涉及对字符的操作,尤其是脚本语言更是频繁,不管是生产环境还是面试考验都要面对字符串的操作。


    python的字符串操作通过2部分的方法函数基本上就可以解决所有的字符串操作需求:

[*]python的字符串属性函数
[*]python的string模块

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

[*]字符串属性函数

   系统版本:CentOS release 6.2 (Final)2.6.32-220.el6.x86_64
   python版本:Python 2.6.6

  字符串属性方法
  字符串格式输出对齐



view plaincopyprint?

[*]1.>>> str='stRINg lEArn'
[*]
[*]2.>>>
[*]
[*]3.>>> str.center(20)      #生成20个字符长度,str排中间
[*]
[*]4.'    stRINg lEArn    '
[*]
[*]5.>>>   
[*]
[*]6.>>> str.ljust(20)       #str左对齐
[*]
[*]7.'stRINg lEArn      '   
[*]
[*]8.>>>
[*]
[*]9.>>> str.rjust(20)       #str右对齐
[*]
[*]10.'      stRINg lEArn'
[*]
[*]11.>>>   
[*]
[*]12.>>> str.zfill(20)       #str右对齐,左边填充0
[*]
[*]13.'00000000stRINg lEArn'
  
大小写转换



view plaincopyprint?

[*]1.>>> str='stRINg lEArn'   
[*]
[*]2.>>>   
[*]
[*]3.>>> str.upper() #转大写
[*]
[*]4.'STRING LEARN'
[*]
[*]5.>>>   
[*]
[*]6.>>> str.lower() #转小写
[*]
[*]7.'string learn'
[*]
[*]8.>>>   
[*]
[*]9.>>> str.capitalize() #字符串首为大写,其余小写
[*]
[*]10.'String learn'
[*]
[*]11.>>>   
[*]
[*]12.>>> str.swapcase() #大小写对换
[*]
[*]13.'STrinG LeaRN'
[*]
[*]14.>>>   
[*]
[*]15.>>> str.title() #以分隔符为标记,首字符为大写,其余为小写
[*]
[*]16.'String Learn'
  
字符串条件判断
  



view plaincopyprint?

[*]1.>>> str='0123'
[*]
[*]2.>>> str.isalnum()#是否全是字母和数字,并至少有一个字符   
[*]3.True
[*]
[*]4.>>> str.isdigit()   #是否全是数字,并至少有一个字符   
[*]5.True
[*]
[*]6.
[*]
[*]7.>>> str='abcd'
[*]
[*]8.>>> str.isalnum()
[*]
[*]9.True
[*]
[*]10.>>> str.isalpha()   #是否全是字母,并至少有一个字符
[*]11.True
[*]
[*]12.>>> str.islower()   #是否全是小写,当全是小写和数字一起时候,也判断为True   
[*]13.True
[*]
[*]14.
[*]
[*]15.>>> str='abcd0123'
[*]
[*]16.>>> str.islower()   #同上
[*]
[*]17.True
[*]
[*]18.>>> str.isalnum()   
[*]
[*]19.True
[*]
[*]20.
[*]
[*]21.>>> str=' '
[*]
[*]22.>>> str.isspace()    #是否全是空白字符,并至少有一个字符   
[*]23.True
[*]
[*]24.>>> str='ABC'
[*]
[*]25.>>> str.isupper()    #是否全是大写,当全是大写和数字一起时候,也判断为True   
[*]26.True
[*]
[*]27.>>> str='Abb Acc'
[*]
[*]28.>>> str.istitle()    #所有单词字首都是大写,标题
[*]29.True
[*]30.
[*]
[*]31.>>> str='string learn'
[*]32.>>> str.startswith('str') #判断字符串以'str'开头
[*]33.True
[*]34.>>> str.endswith('arn')   #判读字符串以'arn'结尾
[*]35.True
  
字符串搜索定位与替换



view plaincopyprint?

[*]1.>>> str='string lEARn'
[*]
[*]2.>>>   
[*]
[*]3.>>> str.find('a')      #查找字符串,没有则返回-1,有则返回查到到第一个匹配的索引
[*]
[*]4.-1
[*]
[*]5.>>> str.find('n')
[*]
[*]6.4
[*]
[*]7.>>> str.rfind('n')   #同上,只是返回的索引是最后一次匹配的
[*]
[*]8.11
[*]
[*]9.>>>   
[*]
[*]10.>>> str.index('a')   #如果没有匹配则报错
[*]
[*]11.Traceback (most recent call last):
[*]
[*]12.File "<stdin>", line 1, in <module>
[*]
[*]13.ValueError: substring not found
[*]
[*]14.>>> str.index('n')   #同find类似,返回第一次匹配的索引值
[*]
[*]15.4
[*]
[*]16.>>> str.rindex('n')    #返回最后一次匹配的索引值
[*]
[*]17.11
[*]
[*]18.>>>
[*]
[*]19.>>> str.count('a')   #字符串中匹配的次数
[*]
[*]20.0
[*]
[*]21.>>> str.count('n')   #同上
[*]
[*]22.2
[*]
[*]23.>>>
[*]
[*]24.>>> str.replace('EAR','ear')#匹配替换
[*]
[*]25.'string learn'
[*]
[*]26.>>> str.replace('n','N')
[*]
[*]27.'striNg lEARN'
[*]
[*]28.>>> str.replace('n','N',1)
[*]
[*]29.'striNg lEARn'
[*]
[*]30.>>>
[*]
[*]31.>>>
[*]
[*]32.>>> str.strip('n')   #删除字符串首尾匹配的字符,通常用于默认删除回车符
[*]
[*]33.'string lEAR'
[*]
[*]34.>>> str.lstrip('n')#左匹配
[*]
[*]35.'string lEARn'
[*]
[*]36.>>> str.rstrip('n')#右匹配
[*]
[*]37.'string lEAR'
[*]
[*]38.>>>
[*]
[*]39.>>> str='   tab'
[*]
[*]40.>>> str.expandtabs()#把制表符转为空格
[*]
[*]41.'      tab'
[*]
[*]42.>>> str.expandtabs(2) #指定空格数
[*]
[*]43.' tab'
  

  字符串编码与解码



view plaincopyprint?

[*]1.>>> str='字符串学习'
[*]
[*]2.>>> str
[*]
[*]3.'xe5xadx97xe7xacxa6xe4xb8xb2xe5xadxa6xe4xb9xa0'
[*]
[*]4.>>>   
[*]
[*]5.>>> str.decode('utf-8')               #解码过程,将utf-8解码为unicode
[*]
[*]6.u'u5b57u7b26u4e32u5b66u4e60'
[*]
[*]7.
[*]
[*]8.>>> str.decode('utf-8').encode('gbk')#编码过程,将unicode编码为gbk
[*]
[*]9.'xd7xd6xb7xfbxb4xaexd1xa7xcfxb0'
[*]
[*]10.>>> str.decode('utf-8').encode('utf-8')#将unicode编码为utf-8
[*]
[*]11.'xe5xadx97xe7xacxa6xe4xb8xb2xe5xadxa6xe4xb9xa0'
  
字符串分割变换



view plaincopyprint?

[*]1.>>> str='Learn string'
[*]
[*]2.>>> '-'.join(str)
[*]
[*]3.'L-e-a-r-n- -s-t-r-i-n-g'
[*]
[*]4.>>> l1=['Learn','string']
[*]
[*]5.>>> '-'.join(l1)
[*]
[*]6.'Learn-string'
[*]
[*]7.>>>   
[*]
[*]8.>>> str.split('n')
[*]
[*]9.['Lear', ' stri', 'g']
[*]
[*]10.>>> str.split('n',1)
[*]
[*]11.['Lear', ' string']
[*]
[*]12.>>> str.rsplit('n',1)
[*]
[*]13.['Learn stri', 'g']
[*]
[*]14.>>>
[*]
[*]15.>>> str.splitlines()
[*]
[*]16.['Learn string']
[*]
[*]17.>>>
[*]
[*]18.>>> str.partition('n')
[*]
[*]19.('Lear', 'n', ' string')
[*]
[*]20.>>> str.rpartition('n')
[*]
[*]21.('Learn stri', 'n', 'g')
  
string模块源代码



view plaincopyprint?

[*]1."""A collection of string operations (most are no longer used).
[*]
[*]2.
[*]
[*]3.Warning: most of the code you see here isn't normally used nowadays.
[*]
[*]4.Beginning with Python 1.6, many of these functions are implemented as
[*]
[*]5.methods on the standard string object. They used to be implemented by
[*]
[*]6.a built-in module called strop, but strop is now obsolete itself.
[*]
[*]7.
[*]
[*]8.Public module variables:
[*]
[*]9.
[*]
[*]10.whitespace -- a string containing all characters considered whitespace
[*]
[*]11.lowercase -- a string containing all characters considered lowercase letters
[*]
[*]12.uppercase -- a string containing all characters considered uppercase letters
[*]
[*]13.letters -- a string containing all characters considered letters
[*]
[*]14.digits -- a string containing all characters considered decimal digits
[*]
[*]15.hexdigits -- a string containing all characters considered hexadecimal digits
[*]
[*]16.octdigits -- a string containing all characters considered octal digits
[*]
[*]17.punctuation -- a string containing all characters considered punctuation
[*]
[*]18.printable -- a string containing all characters considered printable
[*]
[*]19.
[*]
[*]20."""
[*]
[*]21.
[*]
[*]22.# Some strings for ctype-style character classification
[*]
[*]23.whitespace = ' tnrvf'
[*]
[*]24.lowercase = 'abcdefghijklmnopqrstuvwxyz'
[*]
[*]25.uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
[*]
[*]26.letters = lowercase + uppercase
[*]
[*]27.ascii_lowercase = lowercase
[*]
[*]28.ascii_uppercase = uppercase
[*]
[*]29.ascii_letters = ascii_lowercase + ascii_uppercase
[*]
[*]30.digits = '0123456789'
[*]
[*]31.hexdigits = digits + 'abcdef' + 'ABCDEF'
[*]
[*]32.octdigits = '01234567'
[*]
[*]33.punctuation = """!"#$%&'()*+,-./:;<=>?@[]^_`{|}~"""
[*]
[*]34.printable = digits + letters + punctuation + whitespace
[*]
[*]35.
[*]
[*]36.# Case conversion helpers
[*]
[*]37.# Use str to convert Unicode literal in case of -U
[*]
[*]38.l = map(chr, xrange(256))
[*]
[*]39._idmap = str('').join(l)
[*]
[*]40.del l
[*]
[*]41.
[*]
[*]42.# Functions which aren't available as string methods.
[*]
[*]43.
[*]
[*]44.# Capitalize the words in a string, e.g. " aBc dEf " -> "Abc Def".
[*]
[*]45.def capwords(s, sep=None):
[*]
[*]46.    """capwords(s [,sep]) -> string
[*]
[*]47.
[*]
[*]48.    Split the argument into words using split, capitalize each
[*]
[*]49.    word using capitalize, and join the capitalized words using
[*]
[*]50.    join. If the optional second argument sep is absent or None,
[*]
[*]51.    runs of whitespace characters are replaced by a single space
[*]
[*]52.    and leading and trailing whitespace are removed, otherwise
[*]
[*]53.    sep is used to split and join the words.
[*]
[*]54.
[*]
[*]55.    """
[*]
[*]56.    return (sep or ' ').join(x.capitalize() for x in s.split(sep))
[*]
[*]57.
[*]
[*]58.
[*]
[*]59.# Construct a translation string
[*]
[*]60._idmapL = None
[*]
[*]61.def maketrans(fromstr, tostr):
[*]
[*]62.    """maketrans(frm, to) -> string
[*]
[*]63.
[*]
[*]64.    Return a translation table (a string of 256 bytes long)
[*]
[*]65.    suitable for use in string.translate. The strings frm and to
[*]
[*]66.    must be of the same length.
[*]
[*]67.
[*]
[*]68.    """
[*]
[*]69.    if len(fromstr) != len(tostr):
[*]
[*]70.      raise ValueError, "maketrans arguments must have same length"
[*]
[*]71.    global _idmapL
[*]
[*]72.    if not _idmapL:
[*]
[*]73.      _idmapL = list(_idmap)
[*]
[*]74.    L = _idmapL[:]
[*]
[*]75.    fromstr = map(ord, fromstr)
[*]
[*]76.    for i in range(len(fromstr)):
[*]
[*]77.      L] = tostr
[*]
[*]78.    return ''.join(L)
[*]
[*]79.
[*]
[*]80.
[*]
[*]81.
[*]
[*]82.####################################################################
[*]
[*]83.import re as _re
[*]
[*]84.
[*]
[*]85.class _multimap:
[*]
[*]86.    """Helper class for combining multiple mappings.
[*]
[*]87.
[*]
[*]88.    Used by .{safe_,}substitute() to combine the mapping and keyword
[*]
[*]89.    arguments.
[*]
[*]90.    """
[*]
[*]91.    def __init__(self, primary, secondary):
[*]
[*]92.      self._primary = primary
[*]
[*]93.      self._secondary = secondary
[*]
[*]94.
[*]
[*]95.    def __getitem__(self, key):
[*]
[*]96.      try:
[*]
[*]97.            return self._primary
[*]
[*]98.      except KeyError:
[*]
[*]99.            return self._secondary
[*]
[*]100.
[*]
[*]101.
[*]
[*]102.class _TemplateMetaclass(type):
[*]
[*]103.    pattern = r"""
[*]
[*]104.    %(delim)s(?:
[*]
[*]105.      (?P<escaped>%(delim)s) | # Escape sequence of two delimiters
[*]
[*]106.      (?P<named>%(id)s) | # delimiter and a Python identifier
[*]
[*]107.      {(?P<braced>%(id)s)} | # delimiter and a braced identifier
[*]
[*]108.      (?P<invalid>) # Other ill-formed delimiter exprs
[*]
[*]109.    )
[*]
[*]110.    """
[*]
[*]111.
[*]
[*]112.    def __init__(cls, name, bases, dct):
[*]
[*]113.      super(_TemplateMetaclass, cls).__init__(name, bases, dct)
[*]
[*]114.      if 'pattern' in dct:
[*]
[*]115.            pattern = cls.pattern
[*]
[*]116.      else:
[*]
[*]117.            pattern = _TemplateMetaclass.pattern % {
[*]
[*]118.                'delim' : _re.escape(cls.delimiter),
[*]
[*]119.                'id' : cls.idpattern,
[*]
[*]120.                }
[*]
[*]121.      cls.pattern = _re.compile(pattern, _re.IGNORECASE | _re.VERBOSE)
[*]
[*]122.
[*]
[*]123.
[*]
[*]124.class Template:
[*]
[*]125.    """A string class for supporting $-substitutions."""
[*]
[*]126.    __metaclass__ = _TemplateMetaclass
[*]
[*]127.
[*]
[*]128.    delimiter = '$'
[*]
[*]129.    idpattern = r'*'
[*]
[*]130.
[*]
[*]131.    def __init__(self, template):
[*]
[*]132.      self.template = template
[*]
[*]133.
[*]
[*]134.    # Search for $$, $identifier, ${identifier}, and any bare $'s
[*]
[*]135.
[*]
[*]136.    def _invalid(self, mo):
[*]
[*]137.      i = mo.start('invalid')
[*]
[*]138.      lines = self.template[:i].splitlines(True)
[*]
[*]139.      if not lines:
[*]
[*]140.            colno = 1
[*]
[*]141.            lineno = 1
[*]
[*]142.      else:
[*]
[*]143.            colno = i - len(''.join(lines[:-1]))
[*]
[*]144.            lineno = len(lines)
[*]
[*]145.      raise ValueError('Invalid placeholder in string: line %d, col %d' %
[*]
[*]146.                         (lineno, colno))
[*]
[*]147.
[*]
[*]148.    def substitute(self, *args, **kws):
[*]
[*]149.      if len(args) > 1:
[*]
[*]150.            raise TypeError('Too many positional arguments')
[*]
[*]151.      if not args:
[*]
[*]152.            mapping = kws
[*]
[*]153.      elif kws:
[*]
[*]154.            mapping = _multimap(kws, args)
[*]
[*]155.      else:
[*]
[*]156.            mapping = args
[*]
[*]157.      # Helper function for .sub()
[*]
[*]158.      def convert(mo):
[*]
[*]159.            # Check the most common path first.
[*]
[*]160.            named = mo.group('named') or mo.group('braced')
[*]
[*]161.            if named is not None:
[*]
[*]162.                val = mapping
[*]
[*]163.                # We use this idiom instead of str() because the latter will
[*]
[*]164.                # fail if val is a Unicode containing non-ASCII characters.
[*]
[*]165.                return '%s' % (val,)
[*]
[*]166.            if mo.group('escaped') is not None:
[*]
[*]167.                return self.delimiter
[*]
[*]168.            if mo.group('invalid') is not None:
[*]
[*]169.                self._invalid(mo)
[*]
[*]170.            raise ValueError('Unrecognized named group in pattern',
[*]
[*]171.                           self.pattern)
[*]
[*]172.      return self.pattern.sub(convert, self.template)
[*]
[*]173.
[*]
[*]174.    def safe_substitute(self, *args, **kws):
[*]
[*]175.      if len(args) > 1:
[*]
[*]176.            raise TypeError('Too many positional arguments')
[*]
[*]177.      if not args:
[*]
[*]178.            mapping = kws
[*]
[*]179.      elif kws:
[*]
[*]180.            mapping = _multimap(kws, args)
[*]
[*]181.      else:
[*]
[*]182.            mapping = args
[*]
[*]183.      # Helper function for .sub()
[*]
[*]184.      def convert(mo):
[*]
[*]185.            named = mo.group('named')
[*]
[*]186.            if named is not None:
[*]
[*]187.                try:
[*]
[*]188.                  # We use this idiom instead of str() because the latter
[*]
[*]189.                  # will fail if val is a Unicode containing non-ASCII
[*]
[*]190.                  return '%s' % (mapping,)
[*]
[*]191.                except KeyError:
[*]
[*]192.                  return self.delimiter + named
[*]
[*]193.            braced = mo.group('braced')
[*]
[*]194.            if braced is not None:
[*]
[*]195.                try:
[*]
[*]196.                  return '%s' % (mapping,)
[*]
[*]197.                except KeyError:
[*]
[*]198.                  return self.delimiter + '{' + braced + '}'
[*]
[*]199.            if mo.group('escaped') is not None:
[*]
[*]200.                return self.delimiter
[*]
[*]201.            if mo.group('invalid') is not None:
[*]
[*]202.                return self.delimiter
[*]
[*]203.            raise ValueError('Unrecognized named group in pattern',
[*]
[*]204.                           self.pattern)
[*]
[*]205.      return self.pattern.sub(convert, self.template)
[*]
[*]206.
[*]
[*]207.
[*]
[*]208.
[*]
[*]209.####################################################################
[*]
[*]210.# NOTE: Everything below here is deprecated. Use string methods instead.
[*]
[*]211.# This stuff will go away in Python 3.0.
[*]
[*]212.
[*]
[*]213.# Backward compatible names for exceptions
[*]
[*]214.index_error = ValueError
[*]
[*]215.atoi_error = ValueError
[*]
[*]216.atof_error = ValueError
[*]
[*]217.atol_error = ValueError
[*]
[*]218.
[*]
[*]219.# convert UPPER CASE letters to lower case
[*]
[*]220.def lower(s):
[*]
[*]221.    """lower(s) -> string
[*]
[*]222.
[*]
[*]223.    Return a copy of the string s converted to lowercase.
[*]
[*]224.
[*]
[*]225.    """
[*]
[*]226.    return s.lower()
[*]
[*]227.
[*]
[*]228.# Convert lower case letters to UPPER CASE
[*]
[*]229.def upper(s):
[*]
[*]230.    """upper(s) -> string
[*]
[*]231.
[*]
[*]232.    Return a copy of the string s converted to uppercase.
[*]
[*]233.
[*]
[*]234.    """
[*]
[*]235.    return s.upper()
[*]
[*]236.
[*]
[*]237.# Swap lower case letters and UPPER CASE
[*]
[*]238.def swapcase(s):
[*]
[*]239.    """swapcase(s) -> string
[*]
[*]240.
[*]
[*]241.    Return a copy of the string s with upper case characters
[*]
[*]242.    converted to lowercase and vice versa.
[*]
[*]243.
[*]
[*]244.    """
[*]
[*]245.    return s.swapcase()
[*]
[*]246.
[*]
[*]247.# Strip leading and trailing tabs and spaces
[*]
[*]248.def strip(s, chars=None):
[*]
[*]249.    """strip(s [,chars]) -> string
[*]
[*]250.
[*]
[*]251.    Return a copy of the string s with leading and trailing
[*]
[*]252.    whitespace removed.
[*]
[*]253.    If chars is given and not None, remove characters in chars instead.
[*]
[*]254.    If chars is unicode, S will be converted to unicode before stripping.
[*]
[*]255.
[*]
[*]256.    """
[*]
[*]257.    return s.strip(chars)
[*]
[*]258.
[*]
[*]259.# Strip leading tabs and spaces
[*]
[*]260.def lstrip(s, chars=None):
[*]
[*]261.    """lstrip(s [,chars]) -> string
[*]
[*]262.
[*]
[*]263.    Return a copy of the string s with leading whitespace removed.
[*]
[*]264.    If chars is given and not None, remove characters in chars instead.
[*]
[*]265.
[*]
[*]266.    """
[*]
[*]267.    return s.lstrip(chars)
[*]
[*]268.
[*]
[*]269.# Strip trailing tabs and spaces
[*]
[*]270.def rstrip(s, chars=None):
[*]
[*]271.    """rstrip(s [,chars]) -> string
[*]
[*]272.
[*]
[*]273.    Return a copy of the string s with trailing whitespace removed.
[*]
[*]274.    If chars is given and not None, remove characters in chars instead.
[*]
[*]275.
[*]
[*]276.    """
[*]
[*]277.    return s.rstrip(chars)
[*]
[*]278.
[*]
[*]279.
[*]
[*]280.# Split a string into a list of space/tab-separated words
[*]
[*]281.def split(s, sep=None, maxsplit=-1):
[*]
[*]282.    """split(s [,sep [,maxsplit]]) -> list of strings
[*]
[*]283.
[*]
[*]284.    Return a list of the words in the string s, using sep as the
[*]
[*]285.    delimiter string. If maxsplit is given, splits at no more than
[*]
[*]286.    maxsplit places (resulting in at most maxsplit+1 words). If sep
[*]
[*]287.    is not specified or is None, any whitespace string is a separator.
[*]
[*]288.
[*]
[*]289.    (split and splitfields are synonymous)
[*]
[*]290.
[*]
[*]291.    """
[*]
[*]292.    return s.split(sep, maxsplit)
[*]
[*]293.splitfields = split
[*]
[*]294.
[*]
[*]295.# Split a string into a list of space/tab-separated words
[*]
[*]296.def rsplit(s, sep=None, maxsplit=-1):
[*]
[*]297.    """rsplit(s [,sep [,maxsplit]]) -> list of strings
[*]
[*]298.
[*]
[*]299.    Return a list of the words in the string s, using sep as the
[*]
[*]300.    delimiter string, starting at the end of the string and working
[*]
[*]301.    to the front. If maxsplit is given, at most maxsplit splits are
[*]
[*]302.    done. If sep is not specified or is None, any whitespace string
[*]
[*]303.    is a separator.
[*]
[*]304.    """
[*]
[*]305.    return s.rsplit(sep, maxsplit)
[*]
[*]306.
[*]
[*]307.# Join fields with optional separator
[*]
[*]308.def join(words, sep = ' '):
[*]
[*]309.    """join(list [,sep]) -> string
[*]
[*]310.
[*]
[*]311.    Return a string composed of the words in list, with
[*]
[*]312.    intervening occurrences of sep. The default separator is a
[*]
[*]313.    single space.
[*]
[*]314.
[*]
[*]315.    (joinfields and join are synonymous)
[*]
[*]316.
[*]
[*]317.    """
[*]
[*]318.    return sep.join(words)
[*]
[*]319.joinfields = join
[*]
[*]320.
[*]
[*]321.# Find substring, raise exception if not found
[*]
[*]322.def index(s, *args):
[*]
[*]323.    """index(s, sub [,start [,end]]) -> int
[*]
[*]324.
[*]
[*]325.    Like find but raises ValueError when the substring is not found.
[*]
[*]326.
[*]
[*]327.    """
[*]
[*]328.    return s.index(*args)
[*]
[*]329.
[*]
[*]330.# Find last substring, raise exception if not found
[*]
[*]331.def rindex(s, *args):
[*]
[*]332.    """rindex(s, sub [,start [,end]]) -> int
[*]
[*]333.
[*]
[*]334.    Like rfind but raises ValueError when the substring is not found.
[*]
[*]335.
[*]
[*]336.    """
[*]
[*]337.    return s.rindex(*args)
[*]
[*]338.
[*]
[*]339.# Count non-overlapping occurrences of substring
[*]
[*]340.def count(s, *args):
[*]
[*]341.    """count(s, sub[, start[,end]]) -> int
[*]
[*]342.
[*]
[*]343.    Return the number of occurrences of substring sub in string
[*]
[*]344.    s. Optional arguments start and end are
[*]
[*]345.    interpreted as in slice notation.
[*]
[*]346.
[*]
[*]347.    """
[*]
[*]348.    return s.count(*args)
[*]
[*]349.
[*]
[*]350.# Find substring, return -1 if not found
[*]
[*]351.def find(s, *args):
[*]
[*]352.    """find(s, sub [,start [,end]]) -> in
[*]
[*]353.
[*]
[*]354.    Return the lowest index in s where substring sub is found,
[*]
[*]355.    such that sub is contained within s. Optional
[*]
[*]356.    arguments start and end are interpreted as in slice notation.
[*]
[*]357.
[*]
[*]358.    Return -1 on failure.
[*]
[*]359.
[*]
[*]360.    """
[*]
[*]361.    return s.find(*args)
[*]
[*]362.
[*]
[*]363.# Find last substring, return -1 if not found
[*]
[*]364.def rfind(s, *args):
[*]
[*]365.    """rfind(s, sub [,start [,end]]) -> int
[*]
[*]366.
[*]
[*]367.    Return the highest index in s where substring sub is found,
[*]
[*]368.    such that sub is contained within s. Optional
[*]
[*]369.    arguments start and end are interpreted as in slice notation.
[*]
[*]370.
[*]
[*]371.    Return -1 on failure.
[*]
[*]372.
[*]
[*]373.    """
[*]
[*]374.    return s.rfind(*args)
[*]
[*]375.
[*]
[*]376.# for a bit of speed
[*]
[*]377._float = float
[*]
[*]378._int = int
[*]
[*]379._long = long
[*]
[*]380.
[*]
[*]381.# Convert string to float
[*]
[*]382.def atof(s):
[*]
[*]383.    """atof(s) -> float
[*]
[*]384.
[*]
[*]385.    Return the floating point number represented by the string s.
[*]
[*]386.
[*]
[*]387.    """
[*]
[*]388.    return _float(s)
[*]
[*]389.
[*]
[*]390.
[*]
[*]391.# Convert string to integer
[*]
[*]392.def atoi(s , base=10):
[*]
[*]393.    """atoi(s [,base]) -> int
[*]
[*]394.
[*]
[*]395.    Return the integer represented by the string s in the given
[*]
[*]396.    base, which defaults to 10. The string s must consist of one
[*]
[*]397.    or more digits, possibly preceded by a sign. If base is 0, it
[*]
[*]398.    is chosen from the leading characters of s, 0 for octal, 0x or
[*]
[*]399.    0X for hexadecimal. If base is 16, a preceding 0x or 0X is
[*]
[*]400.    accepted.
[*]
[*]401.
[*]
[*]402.    """
[*]
[*]403.    return _int(s, base)
[*]
[*]404.
[*]
[*]405.
[*]
[*]406.# Convert string to long integer
[*]
[*]407.def atol(s, base=10):
[*]
[*]408.    """atol(s [,base]) -> long
[*]
[*]409.
[*]
[*]410.    Return the long integer represented by the string s in the
[*]
[*]411.    given base, which defaults to 10. The string s must consist
[*]
[*]412.    of one or more digits, possibly preceded by a sign. If base
[*]
[*]413.    is 0, it is chosen from the leading characters of s, 0 for
[*]
[*]414.    octal, 0x or 0X for hexadecimal. If base is 16, a preceding
[*]
[*]415.    0x or 0X is accepted. A trailing L or l is not accepted,
[*]
[*]416.    unless base is 0.
[*]
[*]417.
[*]
[*]418.    """
[*]
[*]419.    return _long(s, base)
[*]
[*]420.
[*]
[*]421.
[*]
[*]422.# Left-justify a string
[*]
[*]423.def ljust(s, width, *args):
[*]
[*]424.    """ljust(s, width[, fillchar]) -> string
[*]
[*]425.
[*]
[*]426.    Return a left-justified version of s, in a field of the
[*]
[*]427.    specified width, padded with spaces as needed. The string is
[*]
[*]428.    never truncated. If specified the fillchar is used instead of spaces.
[*]
[*]429.
[*]
[*]430.    """
[*]
[*]431.    return s.ljust(width, *args)
[*]
[*]432.
[*]
[*]433.# Right-justify a string
[*]
[*]434.def rjust(s, width, *args):
[*]
[*]435.    """rjust(s, width[, fillchar]) -> string
[*]
[*]436.
[*]
[*]437.    Return a right-justified version of s, in a field of the
[*]
[*]438.    specified width, padded with spaces as needed. The string is
[*]
[*]439.    never truncated. If specified the fillchar is used instead of spaces.
[*]
[*]440.
[*]
[*]441.    """
[*]
[*]442.    return s.rjust(width, *args)
[*]
[*]443.
[*]
[*]444.# Center a string
[*]
[*]445.def center(s, width, *args):
[*]
[*]446.    """center(s, width[, fillchar]) -> string
[*]
[*]447.
[*]
[*]448.    Return a center version of s, in a field of the specified
[*]
[*]449.    width. padded with spaces as needed. The string is never
[*]
[*]450.    truncated. If specified the fillchar is used instead of spaces.
[*]
[*]451.
[*]
[*]452.    """
[*]
[*]453.    return s.center(width, *args)
[*]
[*]454.
[*]
[*]455.# Zero-fill a number, e.g., (12, 3) --> '012' and (-3, 3) --> '-03'
[*]
[*]456.# Decadent feature: the argument may be a string or a number
[*]
[*]457.# (Use of this is deprecated; it should be a string as with ljust c.s.)
[*]
[*]458.def zfill(x, width):
[*]
[*]459.    """zfill(x, width) -> string
[*]
[*]460.
[*]
[*]461.    Pad a numeric string x with zeros on the left, to fill a field
[*]
[*]462.    of the specified width. The string x is never truncated.
[*]
[*]463.
[*]
[*]464.    """
[*]
[*]465.    if not isinstance(x, basestring):
[*]
[*]466.      x = repr(x)
[*]
[*]467.    return x.zfill(width)
[*]
[*]468.
[*]
[*]469.# Expand tabs in a string.
[*]
[*]470.# Doesn't take non-printing chars into account, but does understand n.
[*]
[*]471.def expandtabs(s, tabsize=8):
[*]
[*]472.    """expandtabs(s [,tabsize]) -> string
[*]
[*]473.
[*]
[*]474.    Return a copy of the string s with all tab characters replaced
[*]
[*]475.    by the appropriate number of spaces, depending on the current
[*]
[*]476.    column, and the tabsize (default 8).
[*]
[*]477.
[*]
[*]478.    """
[*]
[*]479.    return s.expandtabs(tabsize)
[*]
[*]480.
[*]
[*]481.# Character translation through look-up table.
[*]
[*]482.def translate(s, table, deletions=""):
[*]
[*]483.    """translate(s,table [,deletions]) -> string
[*]
[*]484.
[*]
[*]485.    Return a copy of the string s, where all characters occurring
[*]
[*]486.    in the optional argument deletions are removed, and the
[*]
[*]487.    remaining characters have been mapped through the given
[*]
[*]488.    translation table, which must be a string of length 256. The
[*]
[*]489.    deletions argument is not allowed for Unicode strings.
[*]
[*]490.
[*]
[*]491.    """
[*]
[*]492.    if deletions or table is None:
[*]
[*]493.      return s.translate(table, deletions)
[*]
[*]494.    else:
[*]
[*]495.      # Add s[:0] so that if s is Unicode and table is an 8-bit string,
[*]
[*]496.      # table is converted to Unicode. This means that table *cannot*
[*]
[*]497.      # be a dictionary -- for that feature, use u.translate() directly.
[*]
[*]498.      return s.translate(table + s[:0])
[*]
[*]499.
[*]
[*]500.# Capitalize a string, e.g. "aBc dEf" -> "Abc def".
[*]
[*]501.def capitalize(s):
[*]
[*]502.    """capitalize(s) -> string
[*]
[*]503.
[*]
[*]504.    Return a copy of the string s with only its first character
[*]
[*]505.    capitalized.
[*]
[*]506.
[*]
[*]507.    """
[*]
[*]508.    return s.capitalize()
[*]
[*]509.
[*]
[*]510.# Substring replacement (global)
[*]
[*]511.def replace(s, old, new, maxsplit=-1):
[*]
[*]512.    """replace (str, old, new[, maxsplit]) -> string
[*]
[*]513.
[*]
[*]514.    Return a copy of string str with all occurrences of substring
[*]
[*]515.    old replaced by new. If the optional argument maxsplit is
[*]
[*]516.    given, only the first maxsplit occurrences are replaced.
[*]
[*]517.
[*]
[*]518.    """
[*]
[*]519.    return s.replace(old, new, maxsplit)
[*]
[*]520.
[*]
[*]521.
[*]
[*]522.# Try importing optional built-in module "strop" -- if it exists,
[*]
[*]523.# it redefines some string operations that are 100-1000 times faster.
[*]
[*]524.# It also defines values for whitespace, lowercase and uppercase
[*]
[*]525.# that match <ctype.h>'s definitions.
[*]
[*]526.
[*]
[*]527.try:
[*]
[*]528.    from strop import maketrans, lowercase, uppercase, whitespace
[*]
[*]529.    letters = lowercase + uppercase
[*]
[*]530.except ImportError:
[*]
[*]531.    pass # Use the original versions
[*]
[*]532.
[*]
[*]533.########################################################################
[*]
[*]534.# the Formatter class
[*]
[*]535.# see PEP 3101 for details and purpose of this class
[*]
[*]536.
[*]
[*]537.# The hard parts are reused from the C implementation. They're exposed as "_"
[*]
[*]538.# prefixed methods of str and unicode.
[*]
[*]539.
[*]
[*]540.# The overall parser is implemented in str._formatter_parser.
[*]
[*]541.# The field name parser is implemented in str._formatter_field_name_split
[*]
[*]542.
[*]
[*]543.class Formatter(object):
[*]
[*]544.    def format(self, format_string, *args, **kwargs):
[*]
[*]545.      return self.vformat(format_string, args, kwargs)
[*]
[*]546.
[*]
[*]547.    def vformat(self, format_string, args, kwargs):
[*]
[*]548.      used_args = set()
[*]
[*]549.      result = self._vformat(format_string, args, kwargs, used_args, 2)
[*]
[*]550.      self.check_unused_args(used_args, args, kwargs)
[*]
[*]551.      return result
[*]
[*]552.
[*]
[*]553.    def _vformat(self, format_string, args, kwargs, used_args, recursion_depth):
[*]
[*]554.      if recursion_depth < 0:
[*]
[*]555.            raise ValueError('Max string recursion exceeded')
[*]
[*]556.      result = []
[*]
[*]557.      for literal_text, field_name, format_spec, conversion in   
[*]
[*]558.                self.parse(format_string):
[*]
[*]559.
[*]
[*]560.            # output the literal text
[*]
[*]561.            if literal_text:
[*]
[*]562.                result.append(literal_text)
[*]
[*]563.
[*]
[*]564.            # if there's a field, output it
[*]
[*]565.            if field_name is not None:
[*]
[*]566.                # this is some markup, find the object and do
[*]
[*]567.                # the formatting
[*]
[*]568.
[*]
[*]569.                # given the field_name, find the object it references
[*]
[*]570.                # and the argument it came from
[*]
[*]571.                obj, arg_used = self.get_field(field_name, args, kwargs)
[*]
[*]572.                used_args.add(arg_used)
[*]
[*]573.
[*]
[*]574.                # do any conversion on the resulting object
[*]
[*]575.                obj = self.convert_field(obj, conversion)
[*]
[*]576.
[*]
[*]577.                # expand the format spec, if needed
[*]
[*]578.                format_spec = self._vformat(format_spec, args, kwargs,
[*]
[*]579.                                          used_args, recursion_depth-1)
[*]
[*]580.
[*]
[*]581.                # format the object and append to the result
[*]
[*]582.                result.append(self.format_field(obj, format_spec))
[*]
[*]583.
[*]
[*]584.      return ''.join(result)
[*]
[*]585.
[*]
[*]586.
[*]
[*]587.    def get_value(self, key, args, kwargs):
[*]
[*]588.      if isinstance(key, (int, long)):
[*]
[*]589.            return args
[*]
[*]590.      else:
[*]
[*]591.            return kwargs
[*]
[*]592.
[*]
[*]593.
[*]
[*]594.    def check_unused_args(self, used_args, args, kwargs):
[*]
[*]595.      pass
[*]
[*]596.
[*]
[*]597.
[*]
[*]598.    def format_field(self, value, format_spec):
[*]
[*]599.      return format(value, format_spec)
[*]
[*]600.
[*]
[*]601.
[*]
[*]602.    def convert_field(self, value, conversion):
[*]
[*]603.      # do any conversion on the resulting object
[*]
[*]604.      if conversion == 'r':
[*]
[*]605.            return repr(value)
[*]
[*]606.      elif conversion == 's':
[*]
[*]607.            return str(value)
[*]
[*]608.      elif conversion is None:
[*]
[*]609.            return value
[*]
[*]610.      raise ValueError("Unknown converion specifier {0!s}".format(conversion))
[*]
[*]611.
[*]
[*]612.
[*]
[*]613.    # returns an iterable that contains tuples of the form:
[*]
[*]614.    # (literal_text, field_name, format_spec, conversion)
[*]
[*]615.    # literal_text can be zero length
[*]
[*]616.    # field_name can be None, in which case there's no
[*]
[*]617.    # object to format and output
[*]
[*]618.    # if field_name is not None, it is looked up, formatted
[*]
[*]619.    # with format_spec and conversion and then used
[*]
[*]620.    def parse(self, format_string):
[*]
[*]621.      return format_string._formatter_parser()
[*]
[*]622.
[*]
[*]623.
[*]
[*]624.    # given a field_name, find the object it references.
[*]
[*]625.    # field_name: the field being looked up, e.g. "0.name"
[*]
[*]626.    # or "lookup"
[*]
[*]627.    # used_args: a set of which args have been used
[*]
[*]628.    # args, kwargs: as passed in to vformat
[*]
[*]629.    def get_field(self, field_name, args, kwargs):
[*]
[*]630.      first, rest = field_name._formatter_field_name_split()
[*]
[*]631.
[*]
[*]632.      obj = self.get_value(first, args, kwargs)
[*]
[*]633.
[*]
[*]634.      # loop through the rest of the field_name, doing
[*]
[*]635.      # getattr or getitem as needed
[*]
[*]636.      for is_attr, i in rest:
[*]
[*]637.            if is_attr:
[*]
[*]638.                obj = getattr(obj, i)
[*]
[*]639.            else:
[*]
[*]640.                obj = obj
[*]
[*]641.
[*]
[*]642.      return obj, first
[*]
页: [1]
查看完整版本: python中string模块各属性以及函数的用法