【Python】三連ダブルクォーテーションの文字列でインデントが入る件の解決

Pythonでは改行を伴う文字列を簡単に入力したいとき、三連ダブルクォーテーションで囲むことで宣言することができます。こんな感じ。

long_str = """\
こんにちは
ご機嫌いかがですか?
私は元気です。
"""

ところが、例えばこれが関数の中で定義されていると、こんな感じでインデントが入った文字列になってしまう。

 def long_str_test():
    long_str = """\
    こんにちは
    ご機嫌いかがですか?
    私は元気です。
    """
    print(long_str)
#【結果】
#    こんにちは
#    ご機嫌いかがですか?
#    私は元気です。

これを解決するには、textwrapモジュールをimportし、dedentメソッドを利用します。

【コード】

import textwrap


def format_test():
   test_str = """\
   1
   2
   3
   4
   5
   """
   print(test_str)
   print('############################\n')
   dedented_text = textwrap.dedent(test_str)
   print(dedented_text)


format_test()

【結果】

   1
   2
   3
   4
   5
   
############################

1
2
3
4
5

【余談】

無事解決。

しかし、これだけのためのインポートを行い、dedentのメソッドを利用するなら、三連ダブルクォーテーションを利用しなくても良いんじゃないかという気がする。

ここでバグが生まれても勿体ないし。

何かいい方法があれば教えてください。

この記事が気に入ったらサポートをしてみませんか?