Pythonで改行コードや空白を文字列から削除する方法

Pythonの文字列から空白や改行を削除する方法について解説します。

Pythonで改行コードや空白を文字列から削除する方法

削除する場所によって使い分ける(急いでいる人向け)

  • 文字列から全ての空白や改行を削除(replace
  • 文字列の末尾から空白や改行を削除(rstrip
  • 文字列の先頭から空白や改行を削除(lstrip
  • 文字列の先頭と末尾から空白や改行を削除(strip
# replace()ですべての空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.replace(" ", "")
print(string)
# この文字列の先頭と中間と末尾には空白があります


# replace()ですべての改行を削除する
string = "この文字列の中間と\n末尾には改行があります\n"
print(string)
# この文字列の中間と
# 末尾には改行があります
# 

string = string.replace("\n", "")
print(string)
# この文字列の中間と末尾には改行があります


# rstripで末尾の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.rstrip(" ") # 改行を削除するには'\n'を指定
string
# '   この文字列の先頭と  中間と  末尾には空白があります'


# lstripで先頭の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.lstrip(" ") # 改行を削除するには'\n'を指定
string
# 'この文字列の先頭と  中間と  末尾には空白があります   '


# stripで先頭・末尾の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.strip(" ") # 改行を削除するには'\n'を指定
string
# 'この文字列の先頭と  中間と  末尾には空白があります'

文字列からすべての空白・スペースや改行を削除する(replace, re.sub)

文字列全体から、空白や改行を削除するには、文字列型のreplace()メソッドか、reモジュールのsub()メソッドを利用します。どちらも、特定の文字列を別の文字列に置き換える操作をするので、空白や改行コードを置き換えることで削除することができます。

replace()メソッドは、replace(old, new[, count])という記法で、oldが置き換え前の文字、newが置き換え後の文字になります。countは先頭から最大何回置き換えするかを示し、オプションで指定できます。

reモジュールのsub()メソッドは、re.sub(pattern, repl, string)という記法で、patternが正規表現パターン、replが置き換え後の文字、stringが処理対象の文字列になります。

# replace()ですべての空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.replace(" ", "")
print(string)
# この文字列の先頭と中間と末尾には空白があります


# replace()ですべての改行を削除する
string = "この文字列の中間と\n末尾には改行があります\n"
print(string)
# この文字列の中間と
# 末尾には改行があります
# 

string = string.replace("\n", "")
print(string)
# この文字列の中間と末尾には改行があります


# re.sub()ですべての空白を削除する
import re

string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = re.sub(" ", "", string)
print(string)
# この文字列の先頭と中間と末尾には空白があります


# re.sub()ですべての改行を削除する
string = "この文字列の中間と\n末尾には改行があります\n"
print(string)
# この文字列の中間と
# 末尾には改行があります
# 

string = re.sub("\n", "", string)
print(string)
# この文字列の中間と末尾には改行があります

基本的な文字列の置き換えはreplace()メソッドでできるので普段はこちらを使い、より複雑な表現で置き換えたい場合には、正規表現を扱うことのできるre.sub()メソッドを使うと良いでしょう。

文字列の末尾から空白や改行を削除する(rstrip)

文字列の末尾からだけ空白や改行を削除したい場合には、文字列型のrstrip()メソッドを使います。

rstrip()メソッドは、rstrip([chars])という記法で、chars部分に指定した文字が末尾にあれば、それを除去した文字列のコピーを返します。chars部分はオプションなので、何も指定しないと空白が除去されます

# rstripで末尾の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.rstrip(" ")
string
# '   この文字列の先頭と  中間と  末尾には空白があります'


# rstripに文字列を指定すると、末尾から除去される
name_with_title = "鈴木 太郎 様"
name = name_with_title.rstrip(' 様')
print(name)
# 鈴木 太郎


# rstripで末尾の改行を削除する
string = "この文字列の中間と\n末尾には改行があります\n"
string = string.rstrip("\n")
print(string)
# この文字列の中間と
# 末尾には改行があります

注意点として、charsで指定した文字は、その値に含まれる文字の組み合わせ全てが削除の対象になります

たとえば、rstrip()"tokyo"という文字列を指定すると、"t""o""k""y"という文字が末尾から連続しているところまでを削除します"tokyo and kyoto"という文字列に対してrstrip("tokyo")を使うと、"tokyo and "という結果になります。

これは後述するlstrip()メソッド、strip()メソッドでも同様の仕様です。

# 'tokyo'を除去しようと思ったら、kyotoでも除去されてしまう
string = "tokyo and kyoto"
string = string.rstrip("tokyo")
string
# 'tokyo and '

文字列の先頭から空白や改行を削除する(lstrip)

文字列の先頭からだけ空白や改行を削除したい場合には、文字列型のlstrip()メソッドを使います。

引数の指定はrstrip()メソッドと同じで、lstrip([chars])です。文字列で先頭に改行がくることはあまりありませんが、同様に使うことができます。

# lstripで先頭の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.lstrip(" ")
string
# 'この文字列の先頭と  中間と  末尾には空白があります   '

文字列の先頭と末尾から空白や改行を削除する(strip)

文字列の先頭と末尾の両方から特定の文字列を削除したい場合には、同じく文字列型のstrip()メソッドを使います。

rstrip()メソッドとlstrip()メソッドと同じ使い方ですが、strip()メソッドは文字列の先頭および末尾部分を除去します。

使い方は、strip([chars])という記法で、chars部分に指定した文字が先頭または末尾にあれば、それを除去した文字列のコピーを返します。chars部分はオプションなので、何も指定しないと空白が除去されます

# stripで先頭・末尾の空白を削除する
string = "   この文字列の先頭と  中間と  末尾には空白があります   "
string = string.strip(" ")
string
# 'この文字列の先頭と  中間と  末尾には空白があります'


# stripに文字列を指定すると、先頭・末尾から除去される
kaibun = "たけやぶやけた"
kaibun_strip = kaibun.strip('たけ')
print(kaibun_strip)
# やぶや