1. はじめに
Pythonで文字列を扱っていると、意図しない改行コード(\nや\r\n)が含まれていて困ることがあります。特に、Webスクレイピングやファイル処理で取得したデータに多く見られる現象です。
この記事では、Pythonで文字列内の改行コードを削除する方法について、初心者でもわかりやすく丁寧に解説します。
実務でも頻繁に使われる処理なので、コード例を交えながら基礎から応用までしっかり学んでいきましょう。
2. Pythonで改行コードを削除する基本
2-1. 改行コードとは?
Pythonで扱う文字列の中に含まれる改行コードは、主に次の2種類です。
\n
:Unix/Linux系、Mac(macOS)での改行\r\n
:Windowsでの改行
これらは目に見えない制御文字で、文字列の中に含まれていても画面では改行としてしか見えません。
2-2. replace()で改行コードを削除
Pythonで改行コードを削除する最も基本的な方法は、str.replace()
を使うことです。
text = "こんにちは。\n今日はいい天気ですね。\n明日も晴れるといいですね。"
# 改行コードを空文字に置き換えて削除
text_no_newline = text.replace("\n", "")
print(text_no_newline)
実行結果:
こんにちは。今日はいい天気ですね。明日も晴れるといいですね。
このように\n
を空文字""
で置き換えることで、改行がすべて削除されます。
2-3. 複数の改行コードに対応する
Windows環境などでは\r\n
が使われる場合もあるため、念のため両方対応しておくと安心です。
text = "こんにちは。\r\n今日はいい天気ですね。\r\n明日も晴れるといいですね。"
# 両方の改行コードを削除
text = text.replace("\r\n", "").replace("\n", "")
print(text)
実行結果:
こんにちは。今日はいい天気ですね。明日も晴れるといいですね。
3. よくある使い方・応用例
3-1. 改行を削除して1行のログとして保存
ログファイルやCSV出力時に、1行にまとめて書き出す処理は実務で頻出します。
log_text = """
2025-07-10 10:00:00 INFO 開始処理
2025-07-10 10:01:00 INFO 処理中
2025-07-10 10:02:00 INFO 終了
"""
# 改行を削除して1行にまとめる
cleaned_log = log_text.replace("\n", " ").strip()
print(cleaned_log)
実行結果:
2025-07-10 10:00:00 INFO 開始処理 2025-07-10 10:01:00 INFO 処理中 2025-07-10 10:02:00 INFO 終了
strip()
を使うことで、先頭や末尾の空白も同時に削除できます。
3-2. Webスクレイピングの結果を整形
スクレイピングで取得したHTML要素のテキストには、不要な改行が含まれていることがあります。
from bs4 import BeautifulSoup
html = "<p>こんにちは。\n今日は\nいい天気ですね。</p>"
soup = BeautifulSoup(html, "html.parser")
text = soup.get_text()
# 改行を削除
cleaned_text = text.replace("\n", "")
print(cleaned_text)
実行結果:
こんにちは。今日はいい天気ですね。
3-3. 改行コードの統一(削除せず統一)
削除ではなく「統一」したい場合には、置換の応用で実現可能です。
text = "行1\r\n行2\n行3\r\n"
# すべての改行コードをUnix系(\n)に統一
normalized_text = text.replace("\r\n", "\n").replace("\r", "\n")
print(normalized_text)
実行結果:
行1
行2
行3
ファイル出力時のトラブル回避にも有効です。
4. 注意点・エラー対策
4-1. 改行を削除すると読みにくくなるケース
文章の構造を維持したい場合には、安易に改行削除を行うと可読性が落ちるため注意しましょう。
4-2. replace()は文字列が変更不可(immutable)
Pythonの文字列は変更不可(immutable)なので、replace()
は元の変数を直接変更しません。必ず代入が必要です。
text = "Hello\nWorld"
text.replace("\n", "") # これだけではtextは変化しない
print(text)
実行結果:
Hello
World
正しくはこう書きます:
text = text.replace("\n", "")
4-3. strip()では途中の改行は削除できない
strip()
は文字列の先頭と末尾にある改行しか削除しません。文字列中の改行を削除するにはreplace()
が必要です。
5. まとめ
replace()
を使えば、文字列中の改行コードを簡単に削除できる\n
だけでなく、\r\n
にも注意して処理を行う- スクレイピングやログ出力など、実務での活用場面が多い
- 見た目の改行と実際のコード上の改行の違いに気をつけよう
今回学んだテクニックは、データの整形やファイル出力など幅広いシーンで使えます。
初心者の方はまずreplace()
を自由に使いこなせるように練習してみてください。