Pythonの文字列は、作成後に変更することができない。
例えば、ある文字列strの3文字目を'z'に書き換えるつもりで以下のようなコードを書くと
#!/bin/env python # -*- coding: utf-8 -*- str = "abcdefghi" str[2] = 'z'
以下のようなエラーが出て実行ができない。
Traceback (most recent call last): File "string.py", line 5, in <module> str[2] = 'z' TypeError: 'str' object does not support item assignment
方法は2通り。
方法1: 文字列をいったんリストに変換する方法
文字列をばらしてリストを生成することで、文字を自由に編集できるようになる。編集し終われば、またリストから文字列に戻せばよい。
#!/bin/env python # -*- coding: utf-8 -*- # 元の文字列 str = "abcdefghi" # いったんリストにする str_list = list(str) print(str_list) # リストの3番目の要素を'z'で上書き str_list[2] = 'z' # またリストから文字列へ戻す str_changed = "".join(str_list) print(str_changed)
実行結果は以下のようになる。
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i'] abzdefghi
方法2: スライスを使う方法
スライスを使い、「元文字列の2文字目まで」+ 'z' + 「元文字列の4文字目以降」として新しい文字列を構成する。
#!/bin/env python # -*- coding: utf-8 -*- # 元の文字列 str = "abcdefghi" # スライスをうまいこと使う # 「元文字列の2文字目まで」+ 'z' + 「元文字列の4文字目以降」 str_changed = str[:2] + 'z' + str[3:] print(str_changed)
実行結果は以下のようになる。
abzdefghi