python正規表現テキストで置換

1445 ワード

2 Dクライアントプログラミングはある意味では素材組織であるため、ピクチャ素材組織は常に一括処理を必要とし、pythonはwin/linux/macにかかわらず簡単な実行環境があるに違いない.
適用シーンを2つ挙げます.
  • フォルダ内にない場合は、フォルダ名を前の
  • に挿入する.
  • すべてのファイル名に接頭辞
  • を付ける
    コードを直接見ましょう
    # encoding: UTF-8
    
    import re
    
    
    
    #          Pattern  
    
    p = re.compile(r'(?P<folder>(\w+/)*)(?P<filename>\w+\.png)')
    
    
    
    #   Pattern    ,      ,        None
    
    #match = pattern.match('<key>xxx/duobaojiemian_L/yangpizi.png</key>')
    
    
    
    the_str = """<key>XXXX/duobaojiemian2222_L/duobaojiemian_L/yangpizi.png</key>  
    
      <key>yangpizi2.png</key>  
    
      <key>yangpizi3.png</key> """
    
    
    
    for m in p.finditer(the_str):
    
      #   Match      
    
      print m.groupdict()
    
    
    
    print '-------------------------------'
    
    
    
    #f = lambda m: m.group().find('XXXX/') == -1 and 'XXXX/'+m.group() or m.group() 
    
    def f(m):
    
      s = m.group()
    
      return s.find('XXXX/') == -1 and 'XXXX/'+s or s
    
    
    
    def f2(m2):
    
      d = m2.groupdict()
    
      return d['folder']+'the_'+d['filename']
    
    
    
    print p.sub(f2, the_str)
    
    

      
    正規表現についていくつか説明する必要があります
  • pythonの正規表現キャプチャにグループ化が必要な場合は、この構文(?P<ネーミング>一致する正規表現)
  • を使用します.
  • re.compileは、正規表現をコンパイルし、オブジェクト
  • に戻るために使用される.
  • p.finditterは、一致するすべての反復器
  • を返す
  • p.subは、一致するエントリをコールバック関数に入力し、テキスト
  • を戻り値で置き換える.
  • m.groupdict、ルールのパケット名を使用して対応する値
  • を取得できます.