【Python】文字列を置換【初心者向けにわかりやすく解説】

スポンサードリンク
Python
過去の自分
過去の自分

現在使っているシステムの都合上、環境依存文字が弾かれてしまう…。
Pythonで文字列を置換する方法は無いの?

今の自分
今の自分

あります!
では今回は、「Pythonで文字列を置換する方法」
できるだけわかりやすく解説いたします。
「後ろから置換」「改行コードを削除」「配列を一括置換」
なども紹介いたします。
ぜひ最後まで読んでいってください。

スポンサードリンク

[基本]Pythonで文字列を置換する方法

文字列の置換には「replace」を使います。
早速ですが、使い方を見ていきましょう。
まずは簡単な例から解説いたします。

1文字を置換

「before」という変数「あいうえお」という文字列が入っています。
「あいえお」の「」を「」に置換して、「あいえお」にしてみましょう。

before = 'あいうえお'
after = before.replace('う','く')
print(after)

<実行結果>
あいくえお

【コード2行目の解説】
左辺に、置換後の文字列を格納する変数「after」を作成します。
右辺には、元の変数に続けて「.replace()」を記述します。
()内には、「変更したい文字」「,(カンマ)」「変更後の文字」の順に書いて完了です。

<テンプレ>
【 置換後の文字列を格納する変数 = 元の変数.replace(‘変更したい文字’,’変更後の文字’) 】

変数の中に同じ文字が複数ある場合、全ての文字が置換されます。

before = 'あいうえう'
after = before.replace('う','く')
print(after)

<実行結果>
あいくえく

2文字以上を置換

連続した2文字以上の文字列を置換することも可能です。

before = 'あいうえお'
after = before.replace('いう','きく')
print(after)

<実行結果>
あきくえお

「いう」が「きく」に置換されました。

複数の文字を置換

連続しない複数の文字を置換することもできます。

before = 'あいうえお'
after = before.replace('い','き').replace('え','け')
print(after)

<実行結果>
あきうけお

「い」が「き」に、「え」が「け」に置換されました。

文字を削除

置換後の文字を空白にすることで、文字を削除することができます。

before = 'あいうえお'
after = before.replace('う','')
print(after)

<実行結果>
あいえお

「う」が削除されました。

スポンサードリンク

[応用]Pythonで文字列を置換する方法

すべて前項で解説したものの応用です。
使い方や書き方については前項の基本編をご参考ください。

置換する文字を変数で指定

replaceで置換する文字を、変数で指定することができます。

before = 'あいうえお'
u = 'う'
ki = 'き'
after = before.replace(u,ki)
print(after)

<実行結果>
あいきえお

改行コードを削除

削除の応用として、改行コードである「\n」を削除することもできます。

before = 'あいうえお\nかきくけこ'
print(before)
after = before.replace('\n','')
print(after)

<実行結果>
あいきえお
かきくけこ

あいうえおかきくけこ

改行が削除されました。

「’(シングルクォーテーション)」を削除

文字指定の際に「’(シングルクォーテーション)」を使っているため、通常は「’」を削除することができません。
しかしながら、文字指定の「’」を「”(ダブルクォーテーション)」で代用することで、実現できます。

before = "あい'う'えお"
print(before)
after = before.replace("'","")
print(after)

<実行結果>
あい’う’えお

あいうえお

「’」が削除されました。

文字を1回だけ置換

「しんぶんし」の「ん」を1回だけ置換して、「しきぶんし」にすることができます。

before = 'しんぶんし'
after = before.replace('ん','き',1)
print(after)

<実行結果>
しきぶんし

【コード2行目の解説】
()内の最後の数字は何個目までの文字を置換するかの指定です。
1なら最初の1つで終了し、2つ目以降は置換されません。
2なら2つ目までという具合です。

後ろから文字を1回だけ置換

「あきあああ」を後ろから1回だけ置換して、「あきああい」にすることができます。

before = 'あきあああ'
before = before[::-1]
after = before.replace('あ','い',1)
after = after[::-1]
print(after)

<実行結果>
あきああい

コード2行目:「before[::-1]」で文字列を逆順にしています(あきあああ → あああきあ)
コード3行目:頭の1回だけ「あ」を「い」に置換しています。
コード4行目:再度逆順にすることで、元の順番に戻しています。

配列(リスト)の文字列を一括置換

配列(リスト)に入った[‘あめんぼ’,’あかいな’,’あいうえお’]の「あ」を全て一括で置換することができます。

before = ['あめんぼ','あかいな','あいうえお']
after = []
for middle in before:
    after.append(middle.replace('あ','か'))
    
print(after)

<実行結果>
[‘かめんぼ’, ‘かかいな’, ‘かいうえお’]

for文と配列を使っている以外は前項で解説した方法と同じです。
for文や配列については別の記事をご参考ください。

スポンサードリンク

うまく動作しない時の対処法

見本

文字列が置換されない

置換後の文字列を再代入していない

「before.replace()」だけでは、置換後の文字が「before」に入るわけではありません。
「after」のような新しい変数を用意し、「after = before.replace()」というように代入するか、「before = before.replace()」のように再代入する必要があります。

実際の文字と指定の文字が違う

実際の文字が大文字で、指定の文字が小文字だった場合、置換は実行されません。
全角と半角なども同じです。
また、半角スペースやアンダーバー、トッドなど、わかりにくい文字が紛れ込んでいないかも確認しましょう。

エラーが出る

○○ is not defined

今まで出てきていない変数などを処理しようとした時に出るエラーです。
変数名などが間違っていないかチェックしましょう。

詳しい解説は、下記記事をご参考ください。

その他のエラー

その他のエラーが出た場合は、エラー文をコピーしてNETで検索してみましょう。

スポンサードリンク

最後に

見本

Pythonで文字列を置換する方法を解説いたしました。

当ブログでは、xlwingsやopenpyxlなど、Pythonに関する情報を配信しております。
この記事がわかりやすいと感じた方は、他の記事も読んでいってください。

挫折せずにPythonを独学で学習する方法は特におすすめです。

最後までお読みいただき、ありがとうございました。がんばってください!

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