Pythonで文字列を改行する方法

【Python】文字列を改行する方法

公開: 更新:
CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座

Pythonプログラムを書いていると、文字列の中に改行を入れたい場面や、print関数の改行を制御したい場面が頻繁に発生します。改行の方法はいくつかあり、場面によって最適な方法が異なるため、それぞれの使い分けを正しく理解しておく必要があります。

この記事では、Pythonで改行を扱う方法を以下2つのテーマに分けて、サンプルコード付きで解説していきます。

  1. 文字列に改行を挿入する方法
  2. print関数で改行を制御する方法


Pythonの文字列に改行を挿入する方法

エスケープシーケンス\nで改行する

エスケープシーケンス\nは、Pythonで文字列に改行を挿入する最も基本的な方法です。\nはLF(Line Feed)と呼ばれる改行コードを表す1文字のエスケープシーケンスです。ソースコード上はバックスラッシュと n の2文字で書きますが、Pythonが解釈すると改行を表す1文字として扱われます(len("\n")は1になります)。文字列中のこの位置で、出力時に改行が行われます。

message = "Hello\nWorld\nPython"
print(message)

上記のコードを実行すると、\nの位置でそれぞれ改行され、「Hello」「World」「Python」が3行に分かれて表示されます。1つの文字列の中に複数の\nを挿入することによって、任意の位置で改行を入れることができます。

header = "名前\t年齢\t職業"
row1 = "田中\t30\tエンジニア"
row2 = "佐藤\t25\tデザイナー"
table = header + "\n" + row1 + "\n" + row2
print(table)

このサンプルコードでは、タブ文字\tと改行文字\nを組み合わせて、簡易的な表形式の出力を作成しています。エスケープシーケンスは\n以外にも\t(タブ)や\\(バックスラッシュそのもの)など複数の種類があり、文字列の整形に幅広く活用できます。

三重引用符(トリプルクォート)で複数行の文字列を作る

三重引用符("""または''')を使うと、文字列の中にそのまま改行を含めることができます。コード上で改行した位置がそのまま文字列内の改行として反映されるため、\nを手動で挿入する必要がなく、複数行のテキストを直感的に記述できます。

message = """1行目のテキスト
2行目のテキスト
3行目のテキスト"""
print(message)

上記のコードでは、三重引用符の中に記述した改行がそのまま文字列に含まれ、3行に分かれて出力されます。HTMLテンプレートやSQLなど、複数行にわたるテキストを扱う場面で特に便利です。

html = """\
<html>
<head>
    <title>サンプル</title>
</head>
<body>
    <p>Hello, World!</p>
</body>
</html>"""
print(html)

三重引用符を使う際は、開始引用符の直後に改行を入れると、文字列の先頭に意図しない空行が含まれる点に注意してください。上記のサンプルコードのように、開始引用符の直後に\(行継続)を置くと、コードの見た目のインデントを整えつつ、文字列先頭の空行を防ぐことができます。

\を使わずに開始引用符の直後からテキストを書く方法でも空行は防げますが、ソースコードの見た目が崩れるため、複数行テンプレートを書くときは"""\の書き方が実務でよく使われます。

なお、三重引用符の中の行頭インデントもそのまま文字列に含まれる点にも注意してください。不要な空白が混入しないようにインデント位置を意識するか、textwrap.dedentなどで整形してください。


Python研修一覧はこちら

目的に合うPython研修を一覧形式から探したい方は、ぜひご利用ください。

Python研修を比較する

Java研修一覧はこちら

目的に合うJava研修を一覧形式から探したい方は、ぜひご利用ください。

Java研修を比較する

PHP研修一覧はこちら

目的に合うPHP研修を一覧形式から探したい方は、ぜひご利用ください。

PHP研修を比較する

新入社員研修

目的に合う新入社員研修を一覧形式から探したい方は、ぜひご利用ください。

新入社員研修を比較する

全ての研修からも探したい方はこちら

文字列の連結で改行を挿入する

文字列の連結演算子+を使って、改行文字\nを含む文字列を結合する方法です。変数に格納された複数の文字列を改行で区切りたい場合や、条件に応じて出力内容を組み立てたい場合に適しています。

line1 = "エラーが発生しました"
line2 = "ファイルが見つかりません"
line3 = "パスを確認してください"
error_message = line1 + "\n" + line2 + "\n" + line3
print(error_message)

上記のコードでは、3つの変数に格納されたメッセージを\nで結合し、3行のエラーメッセージとして出力しています。ただし、結合する文字列の数が多くなると、+演算子の繰り返しでコードが冗長になるため、その場合はjoinメソッドの使用を検討してください。

lines = ["1行目", "2行目", "3行目", "4行目"]
result = "\n".join(lines)
print(result)

joinメソッドは、リストの各要素を指定した区切り文字で結合する文字列メソッドです。上記のコードでは"\n"を区切り文字として4つの文字列を結合しているため、各要素の間に改行が挿入されて4行で出力されます。+演算子は要素数が固定の場合に適しており、joinは要素数が変動する場合でもコードを変更せずに対応できる点が大きな違いです。

print関数で改行を制御する方法

Pythonのprint関数は、end引数のデフォルト値が"\n"に設定されているため、出力の末尾に自動的に改行を追加します。また、複数の引数を渡した場合は、各引数の間にデフォルトで半角スペースが挿入されます。これらの動作はend引数とsep引数で変更できます。

print(*objects, sep=' ', end='\n', file=None, flush=False)

出典:Python公式ドキュメント - Built-in Functions: print()

ここでは、print関数の改行を制御する方法を2つ紹介します。

  1. end引数で改行なしに出力する
  2. sep引数で区切り文字を改行にする

それぞれの引数を使い分けることによって、出力のフォーマットを柔軟に制御できます。

それでは各項目について、詳しく解説していきます。

end引数で改行なしに出力する

print関数のend引数に空文字列""を指定すると、出力の末尾に改行が付加されなくなります。プログレスバーの表示や、横並びのデータ出力など、1行に連続して文字を出力したい場面で活用できます。

for i in range(5):
    print(i, end=" ")
print()

上記のコードでは、0から4までの数値が半角スペース区切りで1行に「0 1 2 3 4 」と出力されます。ループの後に引数なしのprint()を呼び出しているのは、最後に改行を入れて次の出力との区切りを作るためです。

items = ["Python", "Java", "Go", "Rust"]
print(", ".join(items))

end引数にはカンマ区切り", "やタブ文字"\t"など、任意の文字列を指定できます。ただし、ループで各要素の間にだけ区切り文字を入れたい場合は、末尾に余分な区切り文字が残ってしまう問題が発生します。

上記のサンプルコードのように、区切り文字を挟んで要素を並べたいときは、joinメソッドで結合してからprintする方がシンプルで確実です。end引数は「1つのprint呼び出しの末尾をどうするか」を制御する用途に使い、「要素間の区切り」にはjoinsep引数を使うのが実務上のセオリーです。

sep引数で区切り文字を改行にする

print関数のsep引数を使うと、複数の引数間に挿入される区切り文字を変更できます。デフォルトの半角スペースの代わりに改行文字\nを指定することによって、各引数を別々の行に出力できます。

print("名前: 田中", "年齢: 30", "職業: エンジニア", sep="\n")

上記のコードでは、3つの引数がそれぞれ改行で区切られ、3行に分かれて出力されます。\nを文字列の中に埋め込む方法と比べて、各項目が独立した引数として記述されるため、コードの可読性が高くなります。

fruits = ["りんご", "みかん", "バナナ", "ぶどう"]
print(*fruits, sep="\n")

リストの先頭に*(アンパック演算子)を付けると、リストの各要素がprint関数の個別の引数として展開されます。上記のコードでは、4つの果物名がそれぞれ改行で区切られて4行で出力されます。リストの要素を1行ずつ表示したい場合に、forループを書かずに簡潔に記述できる方法です。


Python基礎・実践(Django)

企業・法人向けのPython研修では、基礎から応用まで体系的に学べます。

Python研修の詳細

DX社員研修

企業・法人向けのDX研修では、実務に繋がるリスキリングでITレベルを向上させます。

DX研修の詳細

Javaエンジニア育成研修

企業・法人向けのJavaエンジニア育成研修では、Javaの基礎から応用まで確実に習得できます。

Java研修の詳細

新卒・新入社員向け研修

企業・法人に新入社員・新卒社員に向けたプログラミング研修を提供しています。

新入社員研修の詳細

コードキャンプのIT研修を全て見る

Pythonの改行に関するよくある質問

Pythonで\nと書いても改行されないのはなぜですか?

文字列の前にrを付けてraw文字列(生の文字列)にしている場合、\nはエスケープシーケンスとして解釈されず、バックスラッシュと文字nの2文字としてそのまま扱われます。raw文字列とは、バックスラッシュを通常のエスケープ処理せずに文字そのものとして扱う文字列の記法で、正規表現Windowsファイルパスを記述する際によく使われます。

# raw文字列では \n が改行にならない
raw = r"Hello\nWorld"
print(raw)

# 通常の文字列では \n が改行になる
normal = "Hello\nWorld"
print(normal)

上記のコードでは、raw文字列の方は「Hello\nWorld」とそのまま表示され、通常の文字列の方は「Hello」と「World」が改行されて2行で表示されます。意図した改行が行われない場合は、文字列の先頭にrが付いていないか確認してください。

なお、raw文字列はバックスラッシュで終わることができません(r"path\"はSyntaxErrorになります)。Windowsパスをraw文字列で書く場合は末尾に注意し、末尾のバックスラッシュだけは通常の文字列として書き足すなどの工夫が必要です。

Pythonで文字列から改行を削除するにはどうすればよいですか?

stripメソッドまたはreplaceメソッドを使います。stripは文字列の先頭と末尾にある空白文字(改行・スペース・タブなど)をまとめて削除するメソッドで、末尾の改行だけを除去したい場合はrstrip("\n")を使います。文字列の途中にある改行も含めて全て削除したい場合は、replaceメソッドが適しています。

# 末尾の改行を削除
line = "Hello, World!\n"
print(line.rstrip("\n"))

# 全ての改行を削除
text = "1行目\n2行目\n3行目"
print(text.replace("\n", ""))

# 改行をスペースに置換
print(text.replace("\n", " "))

ファイルを1行ずつ読み込むループでは、各行の末尾に改行文字が含まれるため、rstrip("\n")で除去してから処理するのが一般的なパターンです。引数なしのrstrip()を使うと、改行だけではなくスペースやタブも一緒に削除される点に注意してください。

print関数で改行を2つ入れるにはどうすればよいですか?

print関数のend引数に\n\nを指定するか、文字列内に\nを2つ連続で記述することによって、出力に空行を挿入できます。空行とは、テキスト上で何も表示されない行のことで、段落間の視覚的な区切りとして使用されます。

# 方法1: end引数で改行を2つにする
print("段落1", end="\n\n")
print("段落2")

# 方法2: 文字列内に \n を2つ入れる
print("段落A\n\n段落B")

# 方法3: 空のprint()を間に入れる
print("段落X")
print()
print("段落Y")

上記の3つの方法はいずれも同じ結果を得られますが、コードの文脈に応じて使い分けてください。段落の区切りが固定的な場合は方法1か方法2が適しており、条件に応じて空行を入れるかどうかを制御したい場合は方法3が柔軟に対応できます。

※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。

ITやプログラミングに関するコラム


ITやプログラミングに関するニュース

ブログに戻る

コメントを残す

コメントは公開前に承認される必要があることにご注意ください。

企業・法人向けのIT・プログラミング・生成AI研修を探す、比較する - IT・プログラミングを知って学べるコネクトメディア CodeCampが提供するDX人材育成が可能なプログラミングやITが学べる公開講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプが提供する無料で学べるプログラミングスクール講座 - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア 3.5日の研修で、年間1,600時間の削減効果が見込まれる。東京きらぼしフィナンシャルグループのDX人材育成事例 - IT・プログラミングを知って学べるコネクトメディア 配属3ヶ月で30%の生産性向上を実現するいよぎんコンピュータサービスの新人研修に迫る - IT・プログラミングを知って学べるコネクトメディア 金融業界の業務効率化を加速するニッセイアセットマネジメントの生成AI×GAS活用研修事例 - IT・プログラミングを知って学べるコネクトメディア 【製造業のDX人材育成事例】デジタル人材の即戦力化を実現する、日本ガイシ株式会社の異動者向オンボーディング研修 - ITやプログラミングを知って学べるコネクトメディア フューチャーアーキテクト株式会社が実現した新入社員向けIT研修プログラムでタスクフォース制度が主体的な学びと成長を生み出す - IT・プログラミングを知って学べるコネクトメディア コードキャンプDX人材育成研修 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【IT新入社員研修】オンラインとオフラインの最適バランスを実現したFutureOneの導入事例 - IT・プログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/【新入社員研修】柔軟なハイブリッド型Java研修で実現した新卒20名の成長と成果|サークレイス株式会社 - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/現場により近いところにデジタルを根付かせるDX基礎講座研修|株式会社ブリヂストン - ITやプログラミングを知って学べるコネクトメディア コードキャンプIT・プログラミング研修事例/業務の効率化・DX推進に向けたIT人材育成への第一歩|株式会社カナエ - ITやプログラミングを知って学べるコネクトメディア 企業・法人向けのIT・プログラミング研修 - ITやプログラミングを知って学べるコネクトメディア

新着記事

対象者別で探す

子供(小学生・中学生・高校生)向け
プログラミング教室検索する

子供(小学生・中学生・高校生)がロボットやプログラミング言語を学ぶことができるオフラインからオンラインスクールを検索、比較することが可能です。

子供(小学生・中学生・高校生)
プログラミング教室検索する

ITやプログラムなどの
最新情報を検索する

日々、新しいITやプログラミング言語の情報が流れていきますが、特定の情報を時系列でニュースやコラムを確認することができます。

ITやプログラムなどの
最新情報を検索する