このサイトについて

Pythonで改行を含む長い文字列をスマートに記述する

Pythonで改行を含む長い文字列をスマートに記述する

pyhatebuのソースコードを読んでみる (2)より。

続いて、XML文字列を定義している部分。ここがちょっと引っかかるんですよね。
 
[116-119行目]
 
    _post_xml = """<entry xmlns="http://purl.org/atom/ns#">
  <link type="text/html" rel="related" href="%s" />
  <summary type="text/plain">%s</summary>
  </entry>"""

Pythonでは,クオーテーション3つで囲んで改行を含んだ文字列を定義することができる。が,インデントを崩してしまってきたない,というのはご指摘の通り。

インデントを保ちたいなら,たとえばこうするんだろうか。

    _post_xml = ("""<entry xmlns="http://purl.org/atom/ns#">\n"""
                 """<link type="text/html" rel="related" href="%s" />\n"""
                 """<summary type="text/plain">%s</summary>\n"""
                 """</entry>\n""")

括弧で囲む,ダブルクオーテーションを改行で繋げる,というのがポイント。行末に「+」は不要(つけてもいい)。改行コードはエスケープシーケンスで埋め込まないとならない。

Pythonは,括弧内のスペースやタブ,改行などの「空白文字列」には割と肝要。関数やメソッドにたくさん引数を渡したいときなど,うまく使うとコードを見やすく書ける。

    some_function("who", "defines", "such",
                  "many", "arguments", "?")

まあそんなところで。

2010-08-27 04:44