Pythonの改行を初心者向けに解説!print・文字列・ファイル出力で迷わない基本
Pythonで文字列の改行って分かりづらいですよね? printで表示したら勝手に改行されたり、文字列の途中で改行したくなったり、ファイルに書き込んだのに思った位置で改行されなかったりしますよね。
改行はプログラムの読みやすさや出力結果の見やすさに直結します。 この記事では、IT初心者の方にもわかるように、Pythonの改行についてやさしく整理していきます。
Pythonで改行を扱う基本は、print関数の改行、文字列内の \n、ファイル出力時の改行 を理解することです。
この3つがわかると、画面表示でもテキストファイル作成でもかなり迷いにくくなります。
Pythonの改行とは何か¶
まずは、Pythonにおける改行の意味から確認しましょう。 改行には大きく分けて、コードを書くときの改行と、画面やファイルに出力するときの改行があります。
コードを書くときの改行は、人間が読みやすくするための区切りです。一方で、出力するときの改行は、文字として画面やファイルに現れる行の区切りです。
たとえば、次のコードを見てください。
print("こんにちは")
print("Pythonを勉強中です")
このコードを実行すると、次のように2行で表示されます。
こんにちは
Pythonを勉強中です
ここでは、print関数を2回呼び出しているため、それぞれの出力のあとに自動で改行が入っています。Pythonのprintは、初期設定では最後に改行を追加してくれるのです。
初心者のうちは、この自動改行に助けられることが多いです。ただし、改行してほしくない場面では、少し工夫が必要になります。
print関数は自動で改行する¶
Pythonの改行で最初に覚えたいのが、print関数の動きです。 printは文字や数値を画面に表示する関数ですが、表示したあとに自動で改行します。
次のようなコードを書いてみましょう。
print("A")
print("B")
print("C")
実行結果は次のようになります。
A
B
C
printを3回使っているので、3行に分かれて表示されます。特別に改行を指定していなくても、printが自動で行を分けてくれるわけです。
これはとても便利です。ログを確認したり、途中の計算結果を見たりするときに、自然に読みやすい形で表示できます。
printで改行しない方法¶
では、printを使っても改行したくない場合はどうすればよいのでしょうか。そんなときは、end引数を使います。
print関数には、出力の最後に何を付けるかを指定する end という引数があります。初期設定では、ここに改行を意味する \n が入っています。
print("A", end="")
print("B", end="")
print("C")
実行結果は次のようになります。
ABC
end="" と書くことで、printの最後に何も追加しないようにしています。そのため、次のprintの内容が同じ行に続いて表示されます。
少しだけ間を空けたい場合は、endにスペースを指定できます。
print("A", end=" ")
print("B", end=" ")
print("C")
実行結果は次のようになります。
A B C
このように、printの改行は end で調整できます。画面に表示する形を細かく整えたいときに便利です。
文字列の中で改行するには\nを使う¶
次に、文字列そのものの中に改行を入れる方法を見ていきましょう。Pythonでは、文字列の中で \n と書くと改行を表します。
これはバックスラッシュとnを組み合わせた記号です。見た目は2文字ですが、Pythonの中では改行を意味する特別な文字として扱われます。
message = "こんにちは\nPythonを勉強中です"
print(message)
実行結果は次のようになります。
こんにちは
Pythonを勉強中です
文字列は1つですが、途中に \n があるため、表示すると2行になります。メール本文やメッセージを作るときにもよく使います。
最初は \n が少し不思議に見えるかもしれません。ですが、Pythonだけでなく多くのプログラミング言語で使われる基本的な改行表現です。
\nはエスケープシーケンスの一種¶
\n のように、バックスラッシュを使って特別な意味を持たせる書き方をエスケープシーケンスと呼びます。難しい名前ですが、特別な文字を表すための合図だと思えば大丈夫です。
代表的なものを表にまとめると、次のようになります。
| 書き方 | 意味 | よく使う場面 |
|---|---|---|
\n |
改行 | 複数行の文字列を作る |
\t |
タブ | 表のように間隔を空ける |
\\ |
バックスラッシュそのもの | パスや記号を表示する |
\" |
ダブルクォート | 文字列内にダブルクォートを入れる |
\' |
シングルクォート | 文字列内にシングルクォートを入れる |
改行を理解するうえでは、まず \n だけ覚えれば十分です。慣れてきたら、他のエスケープシーケンスも少しずつ使ってみるとよいでしょう。
【関連記事】Pythonのf-stringとは?デバッグが驚くほど楽になる!
複数行の文字列を書く方法¶
Pythonでは、長い文章や複数行の文章を扱うこともあります。そのようなときに毎回 \n を書くと、少し読みにくくなることがあります。
そこで使えるのが、三重クォートです。シングルクォート3つ、またはダブルクォート3つで囲むと、複数行の文字列を書けます。
message = """こんにちは
Pythonを勉強中です
改行もそのまま書けます"""
print(message)
実行結果は次のようになります。
こんにちは
Pythonを勉強中です
改行もそのまま書けます
三重クォートを使うと、コード上の改行がそのまま文字列の改行になります。文章量が多いときは、こちらのほうが見た目も自然です。
ただし、インデントにも注意が必要です。コードの見た目を整えるためにスペースを入れると、そのスペースも文字列に含まれることがあります。
三重クォートと\nの使い分け¶
では、三重クォートと \n はどちらを使えばよいのでしょうか。これは、文字列の長さや用途で決めるとわかりやすいです。
短い文字列なら \n で十分です。長い文章やテンプレートのような文字列なら、三重クォートを使うと読みやすくなります。
short_message = "1行目\n2行目"
long_message = """1行目
2行目
3行目"""
どちらも正しい書き方です。大切なのは、あとから読んだときに意味がわかりやすい形を選ぶことです。
エンジニア歴10年の経験から言うと、文字列の整形はあとで地味に効いてきます。メール本文、ログ、設定ファイルのテンプレートなどは、読みやすい形で書いておくと保守が楽になります。
ファイルに改行を書き込む¶
Pythonでは、画面表示だけでなく、テキストファイルに文字を書き込むこともよくあります。そのときも改行の扱いが大切です。
writeメソッドは、printと違って自動では改行してくれません。必要な場所に自分で \n を入れる必要があります。
with open("sample.txt", "w", encoding="utf-8") as file:
file.write("こんにちは")
file.write("Pythonを勉強中です")
このコードを実行すると、ファイルの中身は次のようになります。
こんにちはPythonを勉強中です
2回writeしているのに、1行につながってしまいました。writeは文字をそのまま書くだけなので、改行は自動で追加されません。
改行したい場合は、次のように \n を入れます。
with open("sample.txt", "w", encoding="utf-8") as file:
file.write("こんにちは\n")
file.write("Pythonを勉強中です\n")
ファイルの中身は次のようになります。
こんにちは
Pythonを勉強中です
この違いはとても重要です。画面表示ではprintが自動で改行してくれますが、ファイル出力では自分で改行を入れる場面が多いと覚えておきましょう。
【関連記事】Pythonのコンテキストマネージャーって何?詳しく解説します!
writelinesは自動で改行しない¶
ファイル出力では、複数の文字列をまとめて書き込むために writelines を使うことがあります。ただし、writelinesも自動では改行してくれません。
lines = ["1行目", "2行目", "3行目"]
with open("sample.txt", "w", encoding="utf-8") as file:
file.writelines(lines)
このコードで書き込まれる内容は、次のようになります。
1行目2行目3行目
名前に lines と入っているので、自動で行を分けてくれそうに感じますよね。ですが、実際にはリストの中身をそのまま連続で書き込みます。
改行したい場合は、各文字列に \n を含めます。
lines = ["1行目\n", "2行目\n", "3行目\n"]
with open("sample.txt", "w", encoding="utf-8") as file:
file.writelines(lines)
もしくは、joinを使って改行でつなげる方法もあります。
lines = ["1行目", "2行目", "3行目"]
with open("sample.txt", "w", encoding="utf-8") as file:
file.write("\n".join(lines))
joinを使うと、リストの要素を指定した文字でつなげられます。この場合は、要素と要素の間に改行を入れています。
【関連記事】Pythonのjoin()関数とは?文字列結合の基本から応用までjoin()関数の使い方を徹底解説
改行コードの違いを知っておこう¶
ここまで \n を改行として説明してきました。実は、OSによって改行を表す文字の組み合わせが違うことがあります。
代表的な違いを表にすると、次のようになります。
| 改行コード | 主に使われる環境 | 意味 |
|---|---|---|
| LF | Linux、macOS、Unix系 | \n |
| CRLF | Windows | \r\n |
| CR | 古いMacなど | \r |
Pythonで普通にテキストファイルを扱う場合、多くの場面では細かく意識しなくても問題ありません。Pythonが環境に合わせてうまく扱ってくれることが多いからです。
ただし、CSVファイルや外部システムと連携する場合は、改行コードの違いでトラブルになることがあります。ファイルを開いたら行が詰まって見える、余計な空行が入る、という現象が起こることもあります。
newline引数で改行の扱いを指定する¶
open関数には、newlineという引数があります。これを使うと、ファイル読み書き時の改行の扱いを指定できます。
たとえば、改行をそのまま扱いたい場合は、newline="" を指定することがあります。
with open("sample.txt", "w", encoding="utf-8", newline="") as file:
file.write("1行目\n")
file.write("2行目\n")
初心者の段階では、毎回newlineを指定する必要はありません。ですが、CSVやWindowsとのやり取りで改行がおかしいときは、newlineの存在を思い出すと助けになります。
実務では、このあたりの小さな違いで時間を取られることがあります。特にWindowsで作ったファイルをLinuxサーバーで処理するような場面では、改行コードの違いが原因になることがあります。
printで空行を入れる¶
出力結果を見やすくするために、空行を入れたいこともあります。Pythonでは、print()とだけ書くと空行を表示できます。
print("開始")
print()
print("終了")
実行結果は次のようになります。
開始
終了
開始と終了の間に空行が入りました。ログや簡単なメニュー表示を作るときに便利です。
もちろん、\n を使って空行を作ることもできます。
print("開始\n")
print("終了")
この場合、開始のあとに改行が入るため、結果として空行ができます。ただし、print自体も最後に改行するため、思ったより行が空くことがあります。
初心者のうちは、空行を入れたいだけならprint()を使うほうがわかりやすいです。余計な改行が増えたときにも原因を追いやすくなります。
長いコードを途中で改行する¶
ここまでは出力される文字の改行を見てきました。次は、コードそのものを読みやすくするための改行です。
Pythonでは、長い式を1行に書きすぎると読みにくくなります。そのようなときは、丸括弧を使って自然に改行できます。
total = (
100
+ 200
+ 300
)
print(total)
このコードは、複数行に分かれていますが、Pythonは1つの式として扱います。丸括弧の中では、比較的自由に改行できます。
関数の引数が長い場合も、改行すると読みやすくなります。
print(
"これは長いメッセージです",
"複数の引数を使っています",
"読みやすく改行しています",
)
Pythonでは、読みやすさがとても重視されます。無理に1行に詰め込むよりも、適切に改行して整えたほうが良いコードになります。
【関連記事】綺麗なコードって何?初心者から一歩抜け出す「リーダブルコード」の3つの基本
バックスラッシュでコードを改行する方法¶
Pythonでは、行末にバックスラッシュを書くことで、次の行とつなげることもできます。ただし、最近のコードでは丸括弧を使うほうが読みやすいことが多いです。
例として、次のように書けます。
total = 100 + \
200 + \
300
print(total)
このコードも動きます。バックスラッシュによって、次の行まで式が続いているとPythonに伝えています。
ただし、バックスラッシュの後ろに余計なスペースがあるとエラーになることがあります。見た目で気づきにくいので、初心者には少し扱いづらいです。
そのため、基本的には丸括弧を使った改行をおすすめします。読みやすく、ミスも減らしやすいからです。
改行を削除する方法¶
改行は入れるだけでなく、削除したい場面もあります。たとえば、ファイルから1行ずつ読み込むと、行末に改行が含まれていることがあります。
そのまま表示すると、余計な空行が出ることがあります。そんなときはstripやrstripを使います。
text = "こんにちは\n"
print(text)
print(text.rstrip())
rstripは、文字列の右側にある空白や改行を取り除きます。行末の改行だけを消したいときによく使います。
ファイルを読み込む例も見てみましょう。
with open("sample.txt", "r", encoding="utf-8") as file:
for line in file:
line = line.rstrip()
print(line)
ファイルを1行ずつ処理するとき、lineには改行が含まれることがあります。rstripしてから使うと、余計な改行に悩まされにくくなります。
ただし、stripは左右の空白も消します。スペースに意味があるデータでは、使い方に注意しましょう。
よくある失敗例¶
ここまで基本を見てきましたが、実際に学習していると似たようなミスをしやすいです。ここでは、初心者がよくつまずく例を紹介します。
printとwriteの改行ルールを混同する¶
printは自動で改行しますが、writeは自動で改行しません。この違いを混同すると、ファイルの中身が1行につながってしまいます。
with open("log.txt", "w", encoding="utf-8") as file:
file.write("開始")
file.write("終了")
期待では2行かもしれませんが、実際は次のようになります。
開始終了
改行したいなら、次のように書きます。
with open("log.txt", "w", encoding="utf-8") as file:
file.write("開始\n")
file.write("終了\n")
この違いは本当によく出ます。画面表示とファイル出力は同じ感覚で扱わないようにしましょう。
\nを普通の文字として表示したい¶
説明文や教材を作るとき、\n という文字そのものを表示したいことがあります。普通に書くと改行として解釈されるため、少し工夫が必要です。
print("改行は \n と書きます")
このコードでは、\n の部分で実際に改行されます。文字として表示したい場合は、バックスラッシュをもう1つ重ねます。
print("改行は \\n と書きます")
実行結果は次のようになります。
改行は \n と書きます
また、raw文字列を使う方法もあります。
print(r"改行は \n と書きます")
raw文字列では、バックスラッシュを特別扱いしにくくなります。正規表現やWindowsのパスでもよく使われる考え方です。
余計な空行が入る¶
printと \n を同時に使うと、思ったより空行が増えることがあります。printはもともと最後に改行するからです。
print("こんにちは\n")
print("Python")
この場合、こんにちはのあとに \n の改行が入り、さらにprintの改行も入ります。結果として空行が1つ増えたように見えます。
余計な空行を避けたい場合は、\n を入れる必要があるか、printだけで十分かを確認しましょう。小さなことですが、出力結果の見やすさに影響します。
Python改行の使い分け一覧¶
ここまでの内容を一度整理しておきましょう。 場面ごとに使う方法を知っておくと、迷ったときにすぐ判断できます。
| やりたいこと | 使う方法 | 例 |
|---|---|---|
| printで普通に改行したい | printを複数回使う | print("A") |
| printで改行したくない | endを指定する | print("A", end="") |
| 文字列の中で改行したい | \n を使う |
"A\nB" |
| 長い文章を複数行で書きたい | 三重クォートを使う | """A B""" |
| ファイルに改行を書きたい | \n を書き込む |
file.write("A\n") |
| 行末の改行を消したい | rstripを使う | line.rstrip() |
| 長いコードを改行したい | 丸括弧を使う | total = (a + b) |
この表を見てもわかるように、改行といっても場面によって書き方が変わります。特に print と write の違いは、最初にしっかり押さえておきたいポイントです。
まとめ¶
Pythonの改行は、最初は少しややこしく感じるかもしれません。ですが、基本を分けて考えるとかなり理解しやすくなります。
画面表示では、print関数が自動で改行してくれます。改行したくない場合は end を使い、文字列の途中で改行したい場合は \n を使います。
ファイルに書き込む場合は、writeが自動で改行しない点に注意が必要です。必要な場所に \n を入れることで、思った通りのテキストを作れます。
さらに、長いコードを読みやすくするための改行や、行末の改行を削除する rstrip も覚えておくと便利です。小さな知識に見えますが、日々のコーディングでは何度も役立ちます。
Python学習では、こうした基本を丁寧に理解することがとても大切です。まずは print、\n、write の3つを手元で試して、改行の動きを自分の目で確認してみてください。
ここまでお読みいただきありがとうございました。