0

SOの回答から

「文字列を変更しないでください。

それらをリストとして扱います。必要な場合にのみ文字列に変換します。

... コードサンプル ...

Python 文字列は不変です (つまり、変更できません)。これには多くの理由があります。選択の余地がなくなるまでリストを使用し、その後でリストを文字列に変換します。」

これはベストプラクティスと見なされますか?

Python には、変更された新しい文字列を返すメソッド (upper()、title()、replace() など) がありますが、新しい文字列を返す挿入メソッドがないのは少し奇妙です。私はそのような方法を逃しましたか?

編集:文字を挿入してファイルの名前を変更しようとしています:

import os
for i in os.listdir('.'):
    i.insert(3, '_')

不変性のために機能しません。ただし、文字列の先頭に追加しても問題ありません。

for i in os.listdir('.'):
    os.rename(i, 'some_random_string' + i)

Edit2: 解決策:

>>> for i in os.listdir('.'):                                                │··
...  os.rename(i, i[:4] + '_' + i[4:])

スライスは確かに素晴らしく、私の問題を解決しますが、新しい文字列を返す insert() メソッドがない理由は論理的な説明ですか?

助けてくれてありがとう。

4

3 に答える 3

0

スライス構文を使用して、任意のシーケンス(文字列、リスト、タプルなど)で機能するジェネリック関数を定義できます。

def insert(s, c, p):
    return s[:p] + c + s[p:]

insert('FILE1', '_', 4)
> 'FILE_1'
于 2013-01-26T21:59:04.410 に答える