Python

Pythonで長い1文を複数行に分けるには?

Pythonで長い1文を複数行に分けるには?

変数で長い文字列を扱うことがあります。
JavaScriptであれば、「'(シングルクォーテーション)」か「"(ダブルクォーテーション)」で囲って、「+」でつなぐことで複数行に分けてもエラーになりません。
(文字列は前回記事参照)

mytxt = '連番\t氏名\t氏名(カタカナ)\t性別\t電話番号\t生年月日' +
        '1\t長崎勝美\tナガサキカツミ\t女\t0952147154\t1996/11/08' +
        '2\t中井萌\tナカイモエ\t女\t0192772541\t1995/05/17' +
        '3\t木内日菜\tキウチヒナ\t女\t0922667757\t1995/08/17' +
        '4\t萩原利彦\tハギワラトシヒコ\t男\t0855019844\t1969/04/01' +
        '5\t小倉琴音\tオグラコトネ\t女\t0745910570\t1964/01/19' +
        '6\t土屋富夫\tツチヤトミオ\t男\t0868249650\t1990/05/31' +
        '7\t北島文雄\tキタジマフミオ\t男\t0964669794\t1977/08/06' +
        '8\t島妃菜\tシマヒナ\t女\t0745906535\t1988/06/08' +
        '9\t児島夏向\tコジマカナタ\t男\t0672503524\t1996/12/17' +
        '10\t織田良明\tオダヨシアキ\t男\t0847790635\t1973/03/08';
 
alert(mytxt);

じゃあ、Pythonなら?
調べてみたら3つあったので、まとめてみました。

 

Pythonで長い1文を複数行に分けるには?

 

「\(バックスラッシュ)」を使う

上記のJavaScriptの例では「+」を使っていましたが、Pythonでは「\(バックスラッシュ)」に変えます。

mytxt = '連番\t氏名\t氏名(カタカナ)\t性別\t電話番号\t生年月日' \
        '1\t長崎勝美\tナガサキカツミ\t女\t0952147154\t1996/11/08' \
        '2\t中井萌\tナカイモエ\t女\t0192772541\t1995/05/17' \
        '3\t木内日菜\tキウチヒナ\t女\t0922667757\t1995/08/17' \
        '4\t萩原利彦\tハギワラトシヒコ\t男\t0855019844\t1969/04/01' \
        '5\t小倉琴音\tオグラコトネ\t女\t0745910570\t1964/01/19' \
        '6\t土屋富夫\tツチヤトミオ\t男\t0868249650\t1990/05/31' \
        '7\t北島文雄\tキタジマフミオ\t男\t0964669794\t1977/08/06' \
        '8\t島妃菜\tシマヒナ\t女\t0745906535\t1988/06/08' \
        '9\t児島夏向\tコジマカナタ\t男\t0672503524\t1996/12/17' \
        '10\t織田良明\tオダヨシアキ\t男\t0847790635\t1973/03/08'
 
print(mytxt)

詳しく書くと、Pythonは変数に複数の文字列リテラルを入れるとき、「+」が要りません。

a = 'hoge' 'fuga'
print(a)
# ⇒ hogefuga

「\(バックスラッシュ)」は、次の行に続くという意味を持つそうです。

 

丸括弧「()」を使う

Pythonでは、カッコ内で改行ができます。

mytxt = (
    '連番\t氏名\t氏名(カタカナ)\t性別\t電話番号\t生年月日'
    '1\t長崎勝美\tナガサキカツミ\t女\t0952147154\t1996/11/08'
    '2\t中井萌\tナカイモエ\t女\t0192772541\t1995/05/17'
    '3\t木内日菜\tキウチヒナ\t女\t0922667757\t1995/08/17'
    '4\t萩原利彦\tハギワラトシヒコ\t男\t0855019844\t1969/04/01'
    '5\t小倉琴音\tオグラコトネ\t女\t0745910570\t1964/01/19'
    '6\t土屋富夫\tツチヤトミオ\t男\t0868249650\t1990/05/31'
    '7\t北島文雄\tキタジマフミオ\t男\t0964669794\t1977/08/06'
    '8\t島妃菜\tシマヒナ\t女\t0745906535\t1988/06/08'
    '9\t児島夏向\tコジマカナタ\t男\t0672503524\t1996/12/17'
    '10\t織田良明\tオダヨシアキ\t男\t0847790635\t1973/03/08'
)
 
print(mytxt)

角括弧[]や波括弧{}でも改行は可能です。
文字列の場合は、丸括弧が無難でしょう。

 

トリプルクォート(三連引用符)を使う

「'(シングルクォーテーション)」か「"(ダブルクォーテーション)」を3つ並べるやり方です。

mytxt = '''連番\t氏名\t氏名(カタカナ)\t性別\t電話番号\t生年月日
        1\t長崎勝美\tナガサキカツミ\t女\t0952147154\t1996/11/08
        2\t中井萌\tナカイモエ\t女\t0192772541\t1995/05/17
        3\t木内日菜\tキウチヒナ\t女\t0922667757\t1995/08/17
        4\t萩原利彦\tハギワラトシヒコ\t男\t0855019844\t1969/04/01
        5\t小倉琴音\tオグラコトネ\t女\t0745910570\t1964/01/19
        6\t土屋富夫\tツチヤトミオ\t男\t0868249650\t1990/05/31
        7\t北島文雄\tキタジマフミオ\t男\t0964669794\t1977/08/06
        8\t島妃菜\tシマヒナ\t女\t0745906535\t1988/06/08
        9\t児島夏向\tコジマカナタ\t男\t0672503524\t1996/12/17
        10\t織田良明\tオダヨシアキ\t男\t0847790635\t1973/03/08'''
 
print(mytxt)

この方法は「」を入れなくても、出力で改行されています。
出力は1行で欲しい場合、この方法は使えません。

ちなみに、複数行のコメントアウトもトリプルクォートでするのが一般的なのだとか。

a = 3
'''
次の処理は、
aの3乗を
計算しています。
'''
print(a ** 3)
 
# ⇒ 27

 

まとめ

長い1文を複数行で書く方法を3つ書きました。
状況に応じて使い分けられるように、それぞれのメリット・デメリットを理解することから始めたいと思います。

-Python
-, , , , , , , , , , , ,