home changes contents help options

Edit history

Edit: -1 of 1
Time: 2009-02-03 21:26:21
Note: /zope/ZWiki/057_ef_bc_9a_e3_82_bf_e3_83_96_e3_81_a8_e5_8d_8a_e8_a7_92_e7_a9_ba_e7_99_bd_e6_96_87_e5_ad_97_e3_82_92_e5_a4_89_e6_8f_9b_e3_81_99_e3_82_8b/edit

changed:
-
057:タブと半角空白文字を変換する
==================================================

タブを半角空白文字に展開するには expandtabs メソッドを使います。

>>> a='\tabc'
>>> b=a.expandtabs(4)
>>> b
'    abc'

Ruby レシピブックと同じ、正規表現を使った方法を採ることもできます。
::
  import re

  def untabify(s, tabstop=8):
      u"""
      タブを半角空白文字に
      """
      return re.sub(
              '(.*?)\t',
              lambda mo: (
                  mo.group(1) + 
                  ' ' * (tabstop - (len(mo.group(1)) % tabstop))
                  ),
              s)

  def tabify(s, tabstop=8):
      u"""
      半角空白文字をタブに
      """
      def repl(mo):
          tab, space = divmod(len(untabify(mo.group(0), tabstop)), tabstop)
          return '\t' * tab + ' ' * space
      return re.sub('(?m)^[ \t]+', repl, s)