Pythonの改行とは?基本的な使用法から高度な応用例まで詳しく解説!

Pythonでの文字列のエクスポートやファイルのインポート・エクスポートをする際に「改行を入れたいけどどうすればいいのか」という疑問を持つ方や 「エクスポート時に改行を削除したい」という悩みを持つ方もいると思います。

そこで今回はPythonで改行を適切に処理する方法を説明します。改行コードは目に見えにくいため使い方が難しそうに見えますが、この記事で詳しく解説していきたいと思います。

初心者でも上級者でも、この記事はユーザーが改行についてより深く理解するのに役立ち、改行の基本的な使用法から始めて、より高度な応用例を見ていきます。 

Pythonと改行とは

Pythonはコード記入が短く読みやすく直接的なコードで知られる初心者でも比較的使いやすいプログラミング言語です。

一方で、無数の機能を備えており、科学技術をはじめとするさまざまな分野で活用されています。

改行は Python の重要な要素の 1 つであり、コードを綺麗に整理された状態に保つのに役立ちます。

Pythonでの改行

Pythonでは改行に「改行コード」を使います。では、改行コードとは何でしょうか?

改行コードは、文字列中の改行を示す文字コードです。改行コードは、文字列中の改行部分が改行であることを示す文字コードです。

「\n」のような文字を見たことがあるかもしれませんが、これは改行コードのエウケープシーケンスになります。

改行コードを入力することで、コンピュータは改行するかどうかを判断します。改行コードはご利用の環境によって異なります。 

  • MacOSの場合は「\r」 
  • Unixの場合は「\n」 
  • Windowsの場合は「\r\n」 

上記がそれぞれに応じて使用されます。

改行コードなどの文字コードを「特殊文字」といいます。

これらの文字はプログラミング特有のものであり、自然言語では使用されません。最初は馴染みがないかもしれませんが、よく使われるのでしっかりと覚えましょう。

改行コードの基礎的な使い方

ここでは、改行コードの基礎的な多雨買い方として以下のことを紹介します。

  • 特殊文字l「\n」の使い方
  • PRINT関数による改行

この2つについて詳しく解説していきます。

特殊文字l「\n」の使い方

Pythonで文字列に改行を挿入する基本的な方法を見てみましょう。

これには、文字列内で特殊文字「\n」を使用することが含まれます。

次のコードを見てみましょう。

このコードでは文字列「Hello\nWorld」はテキスト変数に保存されます。

`\n` は改行を意味し、print 関数を使用して出力される時に新しい行に移動することを意味します。

このコードを実行すると、次のような結果が生成されます。

PRINT関数による改行

print 関数を使用すると、デフォルトで出力の末尾に改行が追加されます。

そのため、複数回print関数を連続して使用すると、各出力は新しい行に表示されます。次のコードを見てみましょう。

このコードは、「Hello」と「World」を別々に出力します。 print 関数を呼び出すたびに新しい行が開始されるため、結果は次のようになります。

これで改行の基礎的な内容は理解できましたね。次は発展的な内容に移ります。

Pythonにおける改行の応用例

Pythonにおける改行の応用例を紹介します。

  • ファイルの読み書きでの改行
  • ファイルの読み込みにおける改行
  • 文字列内の改行の削除方法

この3例を詳しく見てみましょう。

ファイルの読み書きでの改行

Python でファイルを操作する場合、改行は非常に重要な役割を果たします。

たとえば、テキストファイルを作成し、そこに複数行のテキストを書き込む場合は、各行の終わりに改行文字 (`\n`) を使用します。

逆に、テキストファイルを読み取る場合、Python は各行の末尾にある改行文字を自動的に認識します。

これにより、ファイルの内容が読み取られ、各行が個別の文字列としてリストに保存されます。

これらの概念を理解するために、次のコード例を見てみましょう。

  • 書き込み時

このコードは、まず「sample.txt」という名前のファイルを書き込みモード (「w」) で開きます。

次に、「Hello\n」と「World\n」という 2 つのテキストをファイルに書き込みます。各テキストの末尾の「\n」は改行を表します。

このコードを実行すると、「sample.txt」ファイルは次の内容になります。

ファイルの読み込みにおける改行

ファイルを読み取るときの改行を見てみましょう。ここで使用するファイルは、先ほど作成した「sample.txt」ファイルです。次のコードを見てみましょう。

このコードは、ファイル「sample.txt」を読み取りモード (「r」) で開き、readlines メソッドを使用してファイルの内容を 1 行ずつ読み取ります。 readlines メソッドは、ファイルの各行を要素とするリストを返します。したがって、結果は 2 つの文字列「Hello\n」と「World\n」を含むリストになります。

print 関数の end パラメータを空の文字列に設定すると、行が読み取られた後に新しい行を追加できなくなります。

このコードを実行すると、次のような結果が生成されます。

文字列内の改行の削除方法

文字列の先頭または末尾に改行コードがある場合、print 関数のendメッセージでは対応ができなくなるのです。

この場合、stripメソッドを使用して改行などの空白文字を削除する必要があります。以下の例を参照してください。

実行結果は以下の通りになります。

このようにstripメソッドを使用すると、文字列内に存在する改行を削除できます。

改行コードの置き換え

改行コードの置き換えも紹介します。

  • splitlinesメソッドで分割し、joinメソッドで連結
  • replaceメソッドの利用

上記2点について、わかりやすく説明していきます。

 splitlinesメソッドで分割し、joinメソッドで連結

文字列メソッド「splitlinesメソッド」は、文字列を改行ごとに分割してリストを作成します。

その後、「joinメソッド」を使用してリスト内の各項目を連結することで、改行コードを置き換えることができます。

実際のソースコードを見てみましょう。

Splitlines メソッドは、要素を新しい行に分割し、リストを返します。

string.splitlines の出力を見ると、リストが名前ごとに分割されていることがわかります。

次に参加方法です。

join メソッドは string.join(list) の形式で使用されます。

リストの各要素の間に文字列を配置し、連結された文字列を出力します。

最初の例では、2 つの文字列の間に空の文字列が連結されるため、各要素が連結された文字列が作成されます。

2 番目の例では、要素を結合するためにカンマが挿入されているため、各要素の間にカンマを含む文字列が作成されます。

replaceメソッドの利用

replaceメソッドによる置換方法もあります。直感的で分かりやすいですが、\r\nや\nが含まれている場合、順番を間違えると正しく置換できなくなるので注意してください。 

まず正しい例を見てみましょう。

replaceメソッドでは、第一引数に置換文字列(str)、第二引数に置換文字列(str)を指定します。

この例では、最初の引数は改行コード、2 番目の引数はカンマです。このように、replace を使用して何かを視覚的に置き換えることができます。 

次に、間違った置換と正しい置換の例を示します。

このように複数の改行コードを併用した場合、正しく置換されない場合があります。

どの改行コードを使用すればよいかわからない場合は、区切り/結合行を使用してください。 

改行コードがわかっている場合は、次のように記述することで正しく置き換えることができます。

1つ目の例では使用する改行コードに応じて置換順序を変更し、2つ目の例ではreprメソッドを使用しています。

repr メソッドは改行コードなどの特殊文字を通常の文字列として生成するため、問題なく生成できます。 

ただし、先ほども述べたように、改行コードを置き換える場合は、splitline・joinメソッドを使用するのが最も安全です。

改行において気をつけること

Python で改行を扱う時に留意すべき点がいくつかあります。

これには、異なるオペレーティングシステム間の行末コードの違い、文字列が範囲外になることによるエラー、文字が特殊文字として認識されない場合などが含まれます。

まず、改行コードはWindows と Linux/Unix OS で異なります。 Windows では、\r\n は改行コードですが、Linux および Unix では \n です。

したがって、オペレーティングシステム間でファイルを共有したり、異なるシステム間でコードを共有したりする場合は注意が必要です。

この問題を解決する 1 つの方法は、Python の組み込み os .Linesep 関数を使用することです。

これにより、使用しているオペレーティングシステムに応じて改行文字が返されます。

さらに、Python が処理できる文字列の長さには制限があります。

多数の改行を含む長い文字列を処理する場合、文字列が長すぎてメモリエラーが発生する可能性があります。

これを避けるためには、配線の長さを適切に管理したり、必要に応じて配線を分離したりするなどの対策を講じる必要があります。

また、\n を文字列として記述した場合、特殊文字として認識されない場合があります。これは、生の文字列を処理する場合に特に当てはまります。生の文字列はエスケープシーケンスを無視するため、正規表現などでよく使用されます。

生の文字列内の改行を処理するには、\n を明示的に使用する代わりに、文字列の連結または str 関数を使用して改行を挿入する方法があります。

Pythonにおける改行のまとめ

Pythonにおける改行は実感しにくいため扱いが難しいと思いますが、この記事で提示したルール従えば、それほど難しいことではありません。

また最後に解説した気をつけるポイントを押さえておけば、スムーズに改行の対応ができるでしょう。

Pythonにおける改行ができない場合、改行方法を忘れてしまったという場合には、この記事をもう一度読んでみてください。

最新情報をチェックしよう!