(最終更新月:2023年6月)
✔このような方におすすめ記事です
「Pythonで文字列の削除方法を知りたい」
「様々なシチュエーションでの文字列削除のテクニックを身に付けたい」
「Pythonで文字列操作の実例を見て学びたい」
✔本記事を通じてお伝えする内容
- Pythonを使った文字列の削除の基本
- 文字列の削除方法やその応用テクニック
- Pythonによる文字列操作の具体的な実例
当記事では、Pythonを使った文字列の削除の基本から、様々な状況での応用テクニックまで、実例を用いてわかりやすく解説しています。
ぜひ最後までお読みいただき、Pythonでの文字列操作のスキルアップを図りましょう。
Pythonの文字列操作の基本
Pythonでの文字列操作の基本についてご覧いただきます。
文字列とは何か、Pythonでどのように操作するなどの基礎をおさえたうえで、先に進みましょう。
- 文字列とは
- 文字列の操作とメソッド
- インデックスとスライスを使う
文字列とは
文字列とは、一連の文字を表すデータ型です。
Pythonでは文字列をシングルクォーテーション(’)またはダブルクォーテーション(”)で囲むことで作成します。
例えば、'Hello, World!'
や "Python"
などが文字列です。
文字列の操作とメソッド
Pythonの文字列は、さまざまな操作が可能です。
例えば、以下のようなことができます。
- 文字列の連結(+)
- 繰り返し(*)
- 文字数のカウント(len()関数)
- 特定の文字列が含まれているかの確認(in)
メソッドなどを利用して、さまざまな操作ができるのです。
# 文字列の連結
str1 = "Hello"
str2 = "World"
concatenated_str = str1 + " " + str2
print(concatenated_str) # 出力: Hello World
# 文字列の繰り返し
repeated_str = str1 * 3
print(repeated_str) # 出力: HelloHelloHello
# 文字列の長さのカウント
length = len(str1)
print(length) # 出力: 5
# 特定の文字列が含まれているかの確認
contains = "lo" in str1
print(contains) # 出力: True
# 大文字への変換
upper_case_str = str1.upper()
print(upper_case_str) # 出力: HELLO
# 小文字への変換
lower_case_str = str2.lower()
print(lower_case_str) # 出力: world
# 文字列の分割
split_str = "Hello,World".split(",")
print(split_str) # 出力: ['Hello', 'World']
# 文字列の置換
replaced_str = "Hello, World".replace("Hello", "Hi")
print(replaced_str) # 出力: Hi, World
インデックスとスライスを使う
Pythonの文字列はシーケンス型であり、各文字には0から始まるインデックスが割り当てられています。
これを利用して特定の位置の文字を取得したり、文字列を一部切り出したりすることができます。
これをスライスといいます。
str = "Python"
print(str[0])
# 出力結果
# P
print(str[1:4])
# 出力結果
# yth
文字列中の完全一致する文字列を削除
次に、文字列の中から完全一致する文字列を削除する方法を見ていきます。
replace
メソッドと正規表現を利用しましょう。
- replaceメソッドを使う方法
- 正規表現でマッチする文字列を削除: re.sub()
replaceメソッドを使う方法
文字列に対する replace
メソッドは、ある文字列を別の文字列に置換します。
削除したい文字列を空文字列(''
)に置換することで、文字列から特定の文字列を削除可能です。
text = "Hello, World!"
removed_text = text.replace("llo", "")
print(removed_text) # Output: "He, Word!"
上記の例では、文字列の中から”llo”という部分文字列を空文字列に置換しています。
結果として、”Hello, World!”から”llo”が削除された文字列”He, Word!”が出力されるのです。
正規表現でマッチする文字列を削除: re.sub()
Pythonの reモジュールの sub関数を使うと、正規表現でマッチする文字列の削除が可能。
sub関数は第一引数に正規表現パターン、第二引数に置換する文字列(この場合は空文字列)、第三引数に対象の文字列を取ります。
例えば、re.sub(r'\d+', '', 'abc123def')
は 'abcdef'
を返すもの。
ここで \d+
は1つ以上の数字を表す正規表現です。
import re
text = "abc123def"
removed_text = re.sub(r'\d+', '', text)
print(removed_text) # Output: "abcdef"
先頭・末尾の特定の文字を削除
こちらでは、文字列の先頭や末尾から特定の文字を削除する方法を見ていきます。
ここでは strip メソッドとその派生形である lstrip、rstripメソッドを活用する方法です。
- stripメソッドで両端を削除
- lstripメソッドで先頭の文字を削除
- rstripメソッドで末尾の文字を削除
stripメソッドで両端を削除
strip メソッドは、文字列の先頭と末尾から指定した文字を削除するもの。
引数を指定しない場合、スペースや改行などの空白文字を削除します。
例えば、' Hello, World! '.strip()
は 'Hello, World!'
を返します。
text = " Hello, World! "
stripped_text = text.strip()
print(stripped_text) # Output: "Hello, World!"
lstripメソッドで先頭の文字を削除
lstripメソッドは、stripメソッドと同じく指定した文字を削除しますが、文字列の先頭からのみ削除するものです。
例えば、’ Hello, World!’.lstrip() は ‘Hello, World!’ を返します。
text = " Hello, World! "
left_stripped_text = text.lstrip()
print(left_stripped_text) # Output: "Hello, World! "
rstripメソッドで末尾の文字を削除
rstrip メソッドは、文字列の末尾からのみ削除をおこなうメソッドです。
例えば、' Hello, World! '.rstrip()
は ' Hello, World!'
を返します。
text = " Hello, World! "
right_stripped_text = text.rstrip()
print(right_stripped_text) # Output: " Hello, World!"
Python3.9以降でプレフィックス・サフィックスを削除
Python3.9以降で追加されたメソッドを見ていきましょう。
文字列の先頭(プレフィックス)や末尾(サフィックス)の特定の文字列を削除できるものです。
- removeprefix()でプレフィックスを削除
- removesuffix()でサフィックスを削除
removeprefix()でプレフィックスを削除
removeprefixメソッドは、文字列の先頭にある指定した文字列を削除します。
例えば、’Hello, World!’.removeprefix(‘Hello, ‘) は ‘World!’ を返します。
text = "Hello, World!"
prefix = "Hello, "
result = text.removeprefix(prefix)
print(result) # Output: "World!"
removesuffix()でサフィックスを削除
removesuffixメソッドは、文字列の末尾にある指定した文字列を削除します。
例えば、`”Hello, World!’.removesuffix(‘, World!’)は’Hello’` を返します。
text = "Hello, World!"
suffix = ", World!"
result = text.removesuffix(suffix)
print(result) # Output: "Hello"
文字列の位置や文字数を指定して削除: スライス
文字列の特定の位置や範囲を指定して削除する場合はスライスを使いましょう。
スライスは文字列の一部を取り出すための機能で、[start:stop]
の形式で指定するもの。
- スライスの基本
- 文字列からn番目の文字を削除
- 文字列の一部を削除
スライスの基本
スライスを用いると、インデックスで指定した箇所が取り出せます。
その基本的な構文はこちら。
文字列[開始位置:終了位置]
例はこちらです。
text = 'Hello, World!'
substring1 = text[0:5]
substring2 = text[7:]
print(substring1) # Output: "Hello"
print(substring2) # Output: "World!"
スライスの範囲の注意点は、開始位置はその場から、終了位置は直前までとなることに注意してください。
文字列からn番目の文字を削除
スライスを使って、文字列からn番目の文字を削除することも可能です。
n番目の文字を削除するには、文字列をn-1文字目までと、n+1文字目から最後までに分けて結合します。
例えば、3文字目を削除するには ‘Hello'[0:2] + ‘Hello'[3:] とします。
text = "Hello"
n = 3
new_text = text[:n-1] + text[n:]
print(new_text) # Output: "Helo"
応用した関数はこちらです。
def remove_character(text, position):
return text[:position] + text[position + 1:]
文字列の一部を削除
文字列の一部を削除するには、削除したい部分を取り除いた2つの部分に分けて結合します。
例えば、5文字目から7文字目までを削除するには ‘Hello, World!'[0:4] + ‘Hello, World!'[7:] とします。
text = 'Hello, World!'
start_index = 5
end_index = 7
new_text = text[:start_index] + text[end_index+1:]
print(new_text) # Output: "Hello World!"
関数で汎用的に使えるようにしたものはこちらです。
def remove_range(text, start_index, end_index):
return text[:start_index] + text[end_index + 1:]
【応用】文字列を要素とするリストと改行を含む文字列の場合
文字列の削除をもう少し複雑なケースでおこなっていきましょう。
実際には使える場面も多く存在します。
- リストの文字列要素を削除
- 改行を含む文字列の処理
リストの文字列要素を削除
リストの要素としての文字列から特定の文字を削除する場合は、リストの各要素に対して文字列削除の処理をおこないます。
リスト内包表記を用いて一行で実行可能です。
strings = [' Hello', ' World! ']
result = [s.strip() for s in strings]
print(result) # Output: ['Hello', 'World!']
改行を含む文字列の処理
改行を含む文字列では、各行ごとに処理をおこなう必要があります。
Pythonの splitlines メソッドを用いて文字列を行ごとに分割し、各行に対して削除処理を実行しましょう。
- 各行の文字列の一部を削除
- 条件に応じて行を削除
各行の文字列の一部を削除
各行から特定の文字列を削除方法は以下の2ステップで完了です。
- splitlines メソッドで行ごとに分割した
- 各行に対して文字列削除の処理を実行
リスト内包表記を用いて一行で実行可能です。
text = ' Hello\n World!'
result = '\n'.join([line.lstrip() for line in text.splitlines()])
print(result) # Output: 'Hello\nWorld!'
条件に応じて行を削除
特定の条件を満たす行を削除するには、リスト内包表記の中で if 条件を使います。
text = 'Hello\nWorld!'
result = '\n'.join([line for line in text.splitlines() if not line.startswith('W')])
print(result) # Output: 'Hello'
空白・改行を削除するメソッド
空白や改行の削除についても触れておきます。
場面により、さまざまなメソッドを使いこなせるようになりましょう。
- strip, lstrip, rstripを使って空白を削除
- 改行を削除する方法
strip, lstrip, rstripを使って空白を削除
strip, lstrip, rstrip メソッドに引数を指定しない場合、スペースや改行などの空白文字が削除されます。
text = ' Hello, World! '
result_strip = text.strip()
result_lstrip = text.lstrip()
result_rstrip = text.rstrip()
print(result_strip) # Output: 'Hello, World!'
print(result_lstrip) # Output: 'Hello, World! '
print(result_rstrip) # Output: ' Hello, World!'
strip()、lstrip()、rstrip() メソッドは引数を指定しない場合、文字列の先頭と末尾にある空白文字(スペース、タブ、改行など)が削除されます。
改行を削除する方法
全ての改行を削除するには、replace メソッドを使いましょう。
replaceメソッドの第一引数に改行を、第二引数に空文字を指定します。
text = 'Hello,\nWorld!'
result = text.replace('\n', '')
print(result) # Output: 'Hello,World!'
replace()
メソッドは第一引数に置換対象の文字列を指定し、第二引数に置換後の文字列を指定するもの。
この例では、改行文字 '\n'
を空文字 ''
に置換しているため、全ての改行文字が削除された文字列が返されます。
まとめ
当記事では、Pythonの文字列操作に焦点を当て、特に文字列から特定の文字を削除する方法について学習してきました。
最後に文字列を操作するうえでの注意点を以下にまとめます。
- 文字列はイミュータブル(不変)
- 削除時、元の文字列は変更されないことに注意
- 削除操作は元のデータを変更する可能性があるため、適切に使用することが重要
Pythonの文字列操作は非常に広範で、当記事で紹介した方法以外にも多くの方法があります。
また正規表現を学ぶことで、より複雑なパターンの文字列操作が可能になるでしょう。
いろいろな方法を習得し、より効率的なコーディングを心がけてください。