Pythonで文字列を扱う際に、改行コードを制御する必要があるケースが中には存在するかと思います。
ファイルの入出力時やコンソール表示の際など、改行コードが動作に影響する場面は多々あります。
そこで、今回の記事では、Pythonで改行コードを制御する方法について解説していきたいと思います。
改行コードの挿入や削除・変換など、ケースごとの調整方法を紹介するので、ぜひ参考にしてみてください。
改行コードとは?
改行コードとは、文字列の中で改行したい場所がある場合に、「ここで改行しますよ」ということをプログラム側に指示するための特殊文字のことを言います。
改行コードは使用するOSによって異なり、以下の種類があります。
- Macを含むUnix系 … \n
- Windows系 … \r\n
- (古いMacOSや一部の環境 … \r)
print関数で改行を出力しないようにするには?
Pythonのprint関数では、出力時に標準で末尾に改行コードを追加してから出力する仕様となっています。
例えば、以下のサンプルコードを実行すると、関数を実行する度に自動で改行が行われます。
print('sample1')
print('sample2')
print('sample3')【実行結果】
sample1
sample2
sample3出力時の改行コードを無効にしたい場合は、endオプションを使用します。
print('Hello,', end='')
print('World!')【実行結果】
Hello,World!コード内で改行する
Pythonに限らず、プログラミングでコードを記述していると、一行一行のコードが長くなってしまうことは往々にしてあります。
その場合に有効なのが、コードの途中で改行を加えることです。
コードは、一行ごとの記述が長引けば長引くほど、可読性の低下に繋がってしまいます。
そのため、ある程度のまとまりごとに改行することで、コードの簡潔化が難しい処理でもある程度の読みやすさを確保することができます。
コードの途中で改行を行いたい場合は、任意の箇所にバックスラッシュを記述します。
num = 1 + 2 + 3 + 4 + \
5 + 6 + 7 + 8 + 9 + 10
print(num)【実行結果】
55このように、バックスラッシュを記述することで、処理内容に影響を与えることなくコードを改行することができます。
ファイルの入出力で改行を扱う
ファイルの入出力時に改行コードを扱う場合は、open関数の newline引数で制御を行います。
newline引数は、それぞれ以下の値で任意に指定することができます。
【None】
デフォルトの設定値です。
・読み込み時
universal newlinesモードが有効になり、ファイル内の改行コードを自動的に認識します。
認識した改行コードは「\n」に自動変換されます。
・書き出し時
文字列内の「\n」が、OSのデフォルトの改行コード(os.linesepの値)に自動変換されます。
【空文字(‘’)】
・読み込み時
Noneと同様に、universal newlinesモードが有効になります。
改行コードの自動変換は行われません。
・書き出し時
改行コードの自動変換は行われず、そのまま書き出されます。
(書き出しの場合は、\nを指定した際もこの動作となります)
【\n, \r, \r\n のいずれか】
・読み込み時
指定した文字列を改行コードとして認識します。
改行コードの自動変換は行われません。
・書き出し時(\r, \r\nのみ)
文字列内の「\n」が、指定の改行コードに変換されます。
上述のように、newline引数で指定した内容に応じて、文字列に含まれている改行コードが自動で調整されます。
基本的には、newline引数を省略するか、或いは明示的に Noneを指定するのがおすすめです。
ファイルから読み込んだテキストの改行コードが常に 「\n」 になるよう設定し、書き出しの際には 「\n」 がOSのデフォルトの改行コードに変換されるようにすることで、意図しないコードへと変換される間違いを引き起こしにくく、不具合が発生する確率を下げることができます。
文字列の改行を削除する
文字列に事前に含まれている改行コードは、print関数のendオプションで削除することはできません。
文字列内の改行コードを削除したい場合は、stripメソッドを活用しましょう。
sampleStr = "This is sample.\n"
print(sampleStr)
print("Hello,World!\n")
# 文字列内の改行コードを削除
newStr = sampleStr.strip()
print(newStr)
print("Hello,World!")【実行結果】
This is sample.
Hello,World!
This is sample.
Hello,World!ただし、stripメソッドで削除できるのは文頭と文末の改行コードのみで、文字の間に挟まったものは削除できないので注意が必要です。
# この改行コードは削除されない
sampleStr = "This is\nsample."
newStr = sampleStr.strip()
print(newStr)【実行結果】
This is
sample.まとめ
いかがでしたか?今回は、Pythonで改行コードを扱う方法について解説しました。
使用する環境によってコードが変わったり、関数によって設定方法が異なったりと、慣れない内は扱いづらさを感じてしまうこともあるかもしれません。
プログラミングをする上で、改行コードを扱う機会は多々あるので、回数をこなして使い方をしっかりと覚えていきましょう。
Pythonの勉強方法は?
書籍やインターネットで学習する方法があります。昨今では、YouTubeなどの動画サイトやエンジニアのコミュニティサイトなども充実していて多くの情報が手に入ります。
そして、より効率的に知識・スキルを習得するには、知識をつけながら実際に手を動かしてみるなど、インプットとアウトプットを繰り返していくことが重要です。特に独学の場合は、有識者に質問ができたりフィードバックをもらえるような環境があると、理解度が深まるでしょう。
ただ、Pythonに限らず、ITスキルを身につける際、どうしても課題にぶつかってしまうことはありますよね。特に独学だと、わからない部分をプロに質問できる機会を確保しにくく、モチベーションが続きにくいという側面があります。独学でモチベーションを維持する自信がない人にはプログラミングスクールという手もあります。費用は掛かりますが、その分スキルを身につけやすいです。しっかりと知識・スキルを習得して実践に活かしたいという人はプログラミングスクールがおすすめです。
プログラミングスクールならテックマニアがおすすめ!
ITスキル需要の高まりとともにプログラミングスクールも増えました。しかし、どのスクールに通うべきか迷ってしまう人もいるでしょう。そんな方にはテックマニアをおすすめします!これまで多くのITエンジニアを育成・輩出してきたテックマニアでもプログラミングスクールを開講しています。
<テックマニアの特徴>
・たしかな育成実績と親身な教育 ~セカンドキャリアを全力支援~
・講師が現役エンジニア ~“本当”の開発ノウハウを直に学べる~
・専属講師が学習を徹底サポート ~「わからない」を徹底解決~
・実務ベースでスキルを習得 ~実践的な凝縮カリキュラム~
このような特徴を持つテックマニアはITエンジニアのスタートラインとして最適です。
話を聞きたい・詳しく知りたいという方はこちらからお気軽にお問い合わせください。