トップページ | Python 標準ドキュメント | 事例集 | アーティクル | リンク集 | ダウンロード | サイトマップ 
468x60サイズバナー・シリーズC Simple Fun and Indented
コンテンツ
はじめに - このサイトを立ち上げるに当って一番の問題はいかにラクしてコ...
お題:1 copy.py - 入力をそのまま出力へコピーするプログラムを作成してください...
お題:2 charcount.py - 入力ファイル内の文字数をカウントして出力するプログラムを作...
お題:3 linecount.py - 入力ファイル内の行数をカウントして出力するプログラムを作成...
お題:4 wordcount.py - 入力ファイル内の単語数をカウントして出力するプログラムを作...
お題:5 count.py - お題2、3、4で作成したcharcount.py、line...
お題:6 detab.py - テキストファイルを読み込み、タブをスペースに展開して出力す...
お題:7 entab.py - お題6の逆、スペースをタブに展開して、出力するプログラムを...
お題:8 compress.py - 入力されるデータを圧縮して出力するプログラムを作成してくだ...
お題:9 expand.py - お題8のcompress.pyで圧縮した結果を入力し、元の...
お題:10 crypt.py - 入力データを暗号化して出力するプログラムを作成してください...
アーティクル
 
Python Powered
Powered by Zope
PyJUG網元衆










お題:7 entab.py

お題6の逆、スペースをタブに展開して、出力するプログラムを作成してください。タブ幅はオプションで変更できるようにします(タブ幅8桁)。

ishimoto at gembook.orgさんのお答え

import sys, re

re_spc = re.compile("([^ ]*)( +)$")
def entab(s, tablen=8):
    ret = []
    for col in range(0, len(s), tablen):
        chars = s[col:col+tablen]
        m = re_spc.match(chars)
        if m:
            ret.append(m.group(1))
            ret.append("\t" * ((len(m.group(2))-1) / tablen+1))
        else:
            ret.append(chars)
    return "".join(ret)

for l in sys.stdin.readlines():
    print entab(l)

印刷用ページ
Copyright © 2001-2012 Python Japan User's Group.

警告当サイトの文書・画像等のコンテンツの著作権は、各コンテンツの作成者、もしくは日本Pythonユーザ会に帰属します。
 また、日本Pythonユーザ会はサイト内のコンテンツに他のプログラミング言語からの乗り換えを誘発する恐れのある表現が多々あることを認め、予めお詫び申し上げます。