トップ Team(・∀・)2ch 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

ソース集

 BBS投稿のためのソース変換

escape_code.py(983)

#!/usr/bin/env python

import sys
from tkFileDialog import *

if len(sys.argv) >= 2:
    filenames = sys.argv[1:]
else:
    filenames = askopenfilenames(filetypes =[('python files', '*.py'),
                                             ('text files', '*.txt'),
                                             ('all files', '*.*')])

for filename in filenames:
    src = file(filename)
    dst = file(filename+".txt", "w")
    for line in src:
        line = line.replace("&", "&")
        line = line.replace("<", "&lt;")
        line = line.replace(">", "&gt;")
        dst.write(line.replace(" ", "&nbsp;").strip()+"\n")
    src.close()
    dst.close()

スペースが潰れて見づらいからこれを使うがよい

説明

2chにPythonコードをそのまま投稿すると、インデント(連続した半角スペース)が潰れてぐちゃぐちゃになってしまいます。インデントでコードブロックを表現するPythonには致命的な問題です。この問題は、半角スペース " " を "&nbsp;" に置き換えることで解決できます。

タブでインデントする人はコード中に「line = line.replace("\t", "&nbsp;"*4)」を追加しましょう。

escape_code.py は、Pythonファイル hogehoge.py を以下のルールで置き換え、 hogehoge.py.txt という名前で保存します。

"&" => "&amp;"
"<" => "&lt;"
">" => "&gt;"
' ' => '&nbsp;'

escape_code.py は、標準モジュール tkinter(tkFileDialog) を使用しています。実行すると、ファイル選択ダイアログが開きます。Python2.6以降ではこの部分は動作しない。tkFileDialogの返す文字列を適切に処理する必要あり。