zoukankan      html  css  js  c++  java
  • python字符串的操作——python cookbook

    一.文本
    1.每次处理一个字符
    thelist=list(thestring) #把字符串转成字符序列

    2.字符和字符值之间的转换
    >>> print ord('a')
    97
    >>> print chr(97)
    a
    >>> print ord(u'我')
    25105
    >>> print unichr(25105)  #最大到65535

    3.判断一个变量是否是字符串类型
    (1)def isString(anobj):
     return type(anobj) is type('')  #不足:自己编写的str子类不能通过测试,unicode

    也不可以。
    (2)def isAString(anobj):
     return isinstance(anobj,basestring) #内建类型basestring是str和unicode共同的基

    类。

    4.字符串对齐
    print 'hej'.center(20,'+'),'hej'.ljust(20),'hej'.rjust(20)

    5.去除字符串两端的空格
    x='    hej   '
    x.lstrip(),x.rstrip(),x.strip()

    6.合并字符串
    pieces=['a','bdd','aas']
    largeString=''.join(pieces)
    largeString='%s% something '%(small1,small2)

    7.字符串逐字符或逐词翻转
    revchars=astring[::-1]  #逐字符翻转
    revchars=''.join(astring.split()[::-1])  #逐词翻转
    revchars=''.join(reversed(astring.split()))  #逐词翻转

    8.检查字符串中是否包含了某字符集合中的字符
    def contens(seq,aset):
        """"""
        a=[]
        for c in seq:
            if c  in aset:
                a.append(c)
    contens(list('ab'),'adfd')

    9.字符串的translate方法使用

    def translator(frm='',to='',delete='',keep=None):
        if len(to)==1:
            to=to*len(frm)
        trans=string.maketrans(frm,to)
        if keep is not None:
            allchars=string.maketrans('','')
            delete=allchars.translate(allchars,keep.translate(allchars,delete))
        def translate(s):
            return s.translate(trans,delete)
        return translate
    digits_only=translator(frm='123',to='abc', keep=string.digits)
    print digits_only('adsfa123')

    注意:string.maketrans('a','b')返回的是一个字符串,字符串中使用b替换了a,这个字符串的

    长度为256个字符长。所以,前后两个参数的长度必须一致。
    string.maketrans('','')得到的就是全部字符集合在一起的字符串。
    string.translate(s,trans,delete)就是取得s的一个拷贝,根据trans中的映射关系替换字符,

    根据delete中的字符,删除对应的字符。

    10.过滤字符串中不属于指定集合的字符
    ASCII码版:
    import string
    allchars=string.maketrans('','')
    #----------------------------------------------------------------------
    def makefilter(keep):
        """"""
        delchars=allchars.translate(allchars,keep)
        def thefilter(s):
            """"""
            return s.translate(allchars,delchars)
        return thefilter
    if __name__=='__main__':
        just_vowels=makefilter('1234')
        print just_vowels('adfsadf1221ddfdsa')

    UNICOED版:
    #-*-coding:utf-8-*-
    import string
    import sets
    ########################################################################
    class Keeper(object):
        """"""
        def __init__(self,keep):
            """Constructor"""
            self.keep=sets.Set(map(ord,keep))
        def __getitem__(self,n):
            """"""
            if n not in self.keep:
                return None
            return unichr(n)
        def __call__(self,s):
            """"""
            return s.translate(self)
    makefilter=Keeper
    if __name__=='__main__':
        just_vowels=makefilter(u'我')
        print just_vowels(u'我是谁')
           
    11.改变大小写
    >>> 'asdf'.upper()   #所有字符都大写
    'ASDF'
    >>> 'ASDF'.lower()   #所有字符小写
    'asdf'
    >>> print 'my name IS'.capitalize() #字符串首字符大写
    My name is
    >>> print 'mY naMe iS'.title()      #字符串每个词第一个字符大写
    My Name Is

    12.访问子字符串
    afield=theline[3:8]   #只能一次取一个字段

    16.替换字符串中的子串

    #-*-coding:utf-8-*-
    import string
    def expand(format,d,marker='"',safe=True):
        """"""
        if safe:
            def lookup(w): return d.get(w,w.join(['','']))
        else:
            def lookup(w): 
                    return d[w]
        parts=format.split(marker)
        parts[::1]=map(lookup,parts[::1])
        return ''.join(parts)
    if __name__=='__main__':
        print expand('just "a" test',{'a':'one'})

    注:'as'.join(['a','b'])将会连接'a','b',连接使用'as',结果就是'aasb'
    关于list数组的get方法和string的join方法还没弄明白。

    17.替换字符串中的子串
    #-*-coding:utf-8-*-
    import string
    new_style=string.Template('this is $this')
    print new_style.substitute({'this':5})
    print new_style.substitute(this='sadf')      

    18.检查字符串中的结束标记
    #-*-coding:utf-8-*-
    import os
    import itertools
    #----------------------------------------------------------------------
    def anyTrue(predicate,sequence):
        """"""
        return True in itertools.imap(predicate,sequence)
    #----------------------------------------------------------------------
    def endsWith(s,*endings):
        """"""
        return anyTrue(s.endswith,endings)
       
       

    for filename in os.listdir('.'):
        if endsWith(filename,'.jpg','.py'):
            print filename
           

    19.使用unicode来处理国际化文本
    unicodestring=u'Hello world'
    utf8string=unicodestring.encode("utf-8")
    isostring=unicodestring.encode("ISO-8859-1")

  • 相关阅读:
    八、基本数据结构(图形结构)
    七、基本数据结构(树形结构)
    4、使用 ImportTsv 将 Hive 数据导入 Hbase
    六、跳表
    五、二分法查找
    四、归并排序 && 快速排序
    一、kafka 介绍 && kafka-client
    三、排序之冒泡、插入、选择
    二、YARN
    三、synchronized & lock
  • 原文地址:https://www.cnblogs.com/chenjianhong/p/4145076.html
Copyright © 2011-2022 走看看