Python:文字列内での途中改行(のコツ)

文字列が長くなりすぎるので行をまたいで1つの文字列を作りたい場合,
行末エスケープやトリプルクオテーションを使うことで実現できる.

通例は,

mystr = "Hellooooooooooooooooooooooooooooooooooooooooo\n \
             world.\n \
             I'm going to bed."

とするか,

mystr = """
             Helloooooooooooooooooooooooooooooooooooooooooo
             world.
             I'm going to bed.
             """

として複数行のstringを一度の代入で生成できる.

本来コードの見易さのために行う書き方であるので,目的に沿うように
この例では複数行文字列内でインデントをしている(行頭を揃えている).

しかし実際にこのコードをemacsなどで書き,
生成した文字列を出力すると,
インデント分が空白文字として書き出されてしまい,
上の例では"world."の位置がだいぶ右へ行ってしまう.
見易さを犠牲にしてインデントをしなければいいが,それでは本末転倒である.

この問題は複数行で文字列連結をすることで当然解決できる.

mystr = "Helloooooooooooooooooooooooooooooooooooooooooo\n" \
             + "world.\n" \
             + "I'm going to bed."

多少見易くなってほとんど見たままの出力がされる.

また数値を代入したい場合も

foo = 1
bar = 3.3333333
hoge = "hogehoge"

mystr2 = "foo = %d\n" % foo \
               + "bar = %f\n" % bar \
               + "hoge = %s" % hoge

で複数行でも一つの文字列に問題なく代入できる.