Python|文字列内の改行コードを削除する

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()を自由に使いこなせるように練習してみてください。

タイトルとURLをコピーしました