pyhonでテキストファイルを読み込んだ時に、改行コード\n
が残って困ってしまうことがありますね。
今回はテキストデータから改行コードを削除する方法を3つ紹介します。
- 文字列の置換メソッド:
replace()
で削除 - reモジュールの置換メソッド:
re.sub
で削除 - 文字列の末尾削除メソッド:
rstrip()
で削除
応用例として、クリップボードにコピーしたテキストから、改行コードを削除する効率化技も紹介しています。
改行コードの削除方法
改行を含むテキストデータを読み込むと、改行は改行コード"\n"として読み込まれます。
例えば、次のような改行のあるテキストファイルがあるとします。
'一行目'
'二行目'
''
'三行目'
このとき改行を明示的に\n
で表現すると次のようになります。
'一行目\n'
'二行目\n'
'\n'
'三行目'
改行のあるファイルをそのまま読み込むと、次のように改行が\n
として読み込まれます。
with open("改行のあるテキスト.txt", "r", encoding="UTF-8") as f:
text = f.read()
text
# '一行目\n二行目\n\n三行目'
状況によっては、この改行コード\n
を削除したい場合がありますね。
今回は、この改行コートどの削除方法を次の2種類で紹介します。
- テキスト全体から改行を一括削除
- テキストを一行ずつ読みながら削除 次のような、改行のあるテキストファイルを例に実行例をみてみましょう。
'一行目\n'
'二行目\n'
'\n'
'三行目'
テキスト全体から改行を一括削除
一括で改行を削除する場合は、改行コード\n
を空の文字列""
で置換します。
pythonは置換の方法が豊富で、どれを使えばいいか困りますが、結果は同じなので好きな方法を選びましょう。
- 文字列の置換メソッド:
文字列.replace("\n", "")
reモジュール
の置換メソッド:re.sub("\n", "", 文字列)
改行を削除するのでなく、空白の文字列に置換したい場合は、" "
で置換すればOKです。
まずは、文字列の.replace()
メソッドの実行例を紹介します。
# 改行を削除
text.replace("\n", "")
# '一行目二行目三行目'
# 改行を空白に変換
text.replace("\n", " ")
# '一行目 二行目 三行目'
次に、reモジュール
のre.sub()
関数の実行例を紹介します。
import re
# 改行を削除
re.sub("\n", "", text)
# '一行目二行目三行目'
# 改行を削除
re.sub("\n", " ", text)
# '一行目 二行目 三行目'
一行ずつ読みながら改行処理
テキストファイルを一行ずつ読み込んで、末尾の改行を削除する例を紹介します。
末尾の改行を削除する場合は、文字列のメソッドrstrip()
を使用すると良いですね
文字列.rstrip(XXX)
:文字列
の末尾のXXX
を削除文字列.rstrip()
のように引数を省略すると、末尾の空白を削除
改行を削除せずに一行ずつ読み込んでみます、
with open("改行のあるテキスト.txt", "r", encoding="UTF-8") as f:
for line in f:
print(repr(line)) # 改行の存在を見やすいようにreprで改行を"\n"で表現
# '一行目\n'
# '二行目\n'
# '\n'
# '三行目'
.rstrip(\n)
で改行を削除しながら、一行ずつ読み込んでみます。
with open("改行のあるテキスト.txt", "r", encoding="UTF-8") as f:
for line in f:
print(repr(line.rstrip("\n"))) # 改行の存在が見やすいようにreprで改行を\nで表現
# '一行目'
# '二行目'
# ''
# '三行目'
続いて、read.lines()
で行をリストで受け取った場合の改行処理を紹介します。
with open("改行のあるテキスト.txt", "r", encoding="UTF-8") as f:
lines = f.readlines() # テキストファイルの改行を要素とするリストで読み込み
print(lines)
# ['一行目\n', '二行目\n', '\n', '三行目']
リスト内の要素が改行を持っているので、各要素のrstrip()
メソッドを実行します。
各要素のメソッドを使用する場合は、次の2つの方法があります。
- リスト内包表記で処理
map()
関数で処理
# リスト内包表記で処理
[line.rstrip("\n") for line in lines]
# ['一行目', '二行目', '', '三行目']
# map()関数で処理
list(map(lambda l: l.rstrip("\n"), lines))
# ['一行目', '二行目', '', '三行目']
クリップボードのテキスト改行処理
pyperclip
モジュールを使用すると、クリップボードのテキストをコピペできます。
これを応用すると、コピーしたテキストの改行を削除して、貼り付けという作業を半自動化することができます。
import pyperclip
# 例えば"一行目\n二行目"をコピーしているとする
src = pyperclip.paste() # クリップボードからテキスト読み込み
res = src.replace("\n","") # 改行削除
pyperclip.copy(res) # クリップボードにテキストを戻す
print(src)
# 一行目二行目
pyperclip
モジュールの詳しい使い方は、次の記事で紹介しています。

Pythonで作業を効率化する方法
今回はipynb
をmarkdown
に変換する方法を紹介しました。
pythonを使えば、簡単なスクリプトで作業を劇的に効率化することも可能です!
pythonの効率化関係で言えば、次の記事で紹介しているような本が自動化の本がおススメです。