rstripとは
文字列を右から削除してくれる便利な関数rstrip。以下のように使用していました。
x = 'abcdefg'
x.rstrip('efg')
print(x)
とすると、出力は
abcd
が返ってきます。
今回気づいた間違い
今回、リストの要素から'_1'と付いているものの後ろの'_1'を削除するプログラムを書いていたのですが、'101_1'や'141_1'など、'_1'以外の場所にも'1'が入っている部分でエラーになっていることに気づきました。もしかしてと思って調べてみるとやはり、rstripでは引数('1')だけを削除するのではなく、''だけや、'1'だけでも削除するみたいです。つまり上の例だと以下の様。
x = 'abcdefggefgfegef'
x.rstrip('efg')
print(x)
とすると、出力は変わらず
abcd
代わりにreplaceを使う。
例えば今回自分が書いていたプログラムでは以下のように修正できます。
before
list = ['101_1', '102_1', '102_2', '103_1']
list = [x.rstrip('_1') for x in list]
after
list = ['101_1', '102_1', '102_2', '103_1']
list = [x.replace('_1','') for x in list]
もちろんこれは厳密ではありません。_1が付いているのは最後だけという仮定の元こうしましたが、気になるようでしたら正規表現を使ってください。