裏表(Phinloda のもう裏だか表だか分からないページ)

コンピュータ・プログラミング系の話がメインのそれなりにごちゃごちゃしたネタばかり出てくるサイトです。多分。
「いつか読んだ本」に1日2投稿したのだが

原稿のテキストを書いて、投稿するときにタグを突っ込んだりするのが面倒なので Python で原稿に HTML のタグをちょっとだけ突っ込む処理を作って、それを確認するために書いてたら2つ原稿ができたので投稿したのである。

大したコードじゃないので全部出してみる。

import codecs

filename = 'D:/tmp/books.tmp'

f = codecs.open(filename, 'r', 'utf8')
in_p = False
in_quote = False

def start_p():
    global in_p
    if in_p == False:
        in_p = True
        print("<p>")

def end_p():
    global in_p
    if in_p:
        in_p = False
        print("</p>")
        
def start_quote():
    global in_quote
    if in_quote == False:
        in_quote = True
        print("<blockquote>")
    else:
        print("<br />")     

def end_quote():
    global in_quote
    if in_quote:
        in_quote = False
        print("</blockquote>")

for line in f:
    if len(line) < 3:
        end_p()
        end_quote()
        continue

    if line.startswith('>'):
        end_p()
        start_quote()
        print(line[1:].rstrip())
        
    else:
        end_quote()
        start_p()            
        print(line.rstrip())
                
f.close

直指定の /tmp/books.tmp を開いて、「>」が付いているところを blockquote で囲む、そうでないのは空白で区切って p で囲む、その程度の処理しかしてない。

これで気になってるのが、rstrip して print しているところ。 rstrip は空白含めて改行を削除している。そして print で改行を付けて表示する。 だったら何もしないで改行を追加しない出力関数を使えばいいような気がしたのだが、このあたり、Python 慣れしてないのでどんな書き方がエレガントなのかいまいち把握できていない。 まあ行末の空白もカットできているからいいか、程度の感じで書いている。

JUGEMテーマ:python

| Python | 12:34 | comments(0) | trackbacks(0)
 1/1PAGES 
Powered by "JUGEM"
▲このページの先頭へ
CALENDAR
S M T W T F S
1234567
891011121314
15161718192021
22232425262728
293031    
<< October 2017 >>
NEW ENTRIES
CATEGORIES
ARCHIVES
NEW COMMENTS
NEW TRACKBACKS
LINKS
PROFILE