Pythonで文字列内のすべての出現箇所を別の文字列に置換する方法
str.replace()メソッドを使う方法
Pythonの文字列クラス(str)には、replaceメソッドが標準で用意されています。このメソッドは「置換したい文字列」と「置換後の文字列」を引数として受け取り、文字列オブジェクトに対して呼び出すことで、該当するすべての出現箇所を一括して置き換えることができます。
たとえば、次のように呼び出すと、文字列中のすべての「no」が「yes」に置き換えられます。
>>> 'no one knows how'.replace('no', 'yes')
'yes one kyesws how'
>>> "chihuahua".replace("hua", "hah")
'chihahhah'このように、元の文字列の中に置換対象が何回登場しても、すべての箇所がまとめて処理される点が特徴です。
re.sub()で正規表現による置換を行う方法
より柔軟な置換を行いたい場合は、標準ライブラリのreモジュールを利用します。re.sub(置換対象の正規表現, 置換後の文字列, 対象の文字列)という形式で呼び出すことで、正規表現パターンにマッチした部分をすべて置換できます。
以下はその使用例です。
>>> import re
>>> re.sub('hua', 'hah', 'chihuahua')
'chihahhah're.subは非常に強力な関数です。正規表現を活用することで、単純な文字列一致では実現できない、複雑で細やかな条件での置換が可能になります。たとえば、大文字・小文字を区別せずに置換したり、数字のみ・特定の記号のみを別の文字列に置き換えたりといった応用も簡単に行えます。
使い分けのポイント
固定の文字列をそのまま置き換えるだけであればシンプルなstr.replace()で十分ですが、パターンに基づいた柔軟な置換が必要なケースではre.sub()を選ぶとよいでしょう。用途に応じて両者を使い分けることで、効率的かつ可読性の高いコードを書くことができます。
-
【Python】バイナリ文字列に含まれる「1」のみの部分文字列を数えるアルゴリズム
バイナリ文字列 s が与えられたとき、「1」だけで構成される部分文字列(substring)の総数を求める問題を考えてみましょう。答えが非常に大きくなる可能性がある場合は、結果を 109+7 で割った余りを返します。問題の例たとえば、入力が s = 100111 の場合を考えます。このとき出力は 7 になります。なぜなら、「1」のみを含む部分文字列は次の 7 つだからです。「1」 × 4つ(各位置にある単独の1)「11」 × 2つ「111」 × 1つ解法のアプローチこの問題は、文字列を左から右へ一度走査するだけで解くことができます。ポイントは、「現在位置で終わる『1』のみの部分文字列の数」を累
-
Python Pandas入門:DataFrame内のNaN(欠損値)を0に置き換える方法
PandasのDataFrameに含まれるNaN(欠損値)を0に置き換えるには、fillna()メソッドを使用します。このメソッドは、データクレンジングや前処理の際に非常によく使われる基本的なテクニックです。例として、以下のようなCSVファイル(Microsoft Excelで開いた状態)があるとします。このデータには一部NaN値が含まれています。手順1:必要なライブラリをインポートするまず、Pandasライブラリをインポートします。import pandas as pd手順2:CSVファイルからDataFrameを読み込む次に、read_csv()メソッドを使ってCSVファイルのデータをDa