文字列の特定の位置に値を挿入するために使用できるPythonの関数はありますか?
このようなもの:
"3655879ACB6"
次に、位置4に追加"-"
して"3655-879ACB6"
文字列の特定の位置に値を挿入するために使用できるPythonの関数はありますか?
このようなもの:
"3655879ACB6"
次に、位置4に追加"-"
して"3655-879ACB6"
回答:
いいえ。Python文字列は不変です。
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
ただし、文字が挿入された新しい文字列を作成することは可能です。
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
文字列は不変なので、これを行う別の方法は、文字列をリストに変換することです。これにより、スライスの手間をかけずに、インデックスを付けて変更できます。ただし、リストを文字列に戻すには.join()
、空の文字列を使用する必要があります。
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
これがパフォーマンスに関してどのように比較されるかはわかりませんが、他のソリューションよりも目には簡単だと思います。;-)
私はPythonの特定の位置に文字列を追加するための非常に便利な方法を作りました:
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
例えば:
a = "Jorgesys was here!"
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
#Inserting some characters with a defined position:
print(insertChar(a,0, '-'))
print(insertChar(a,9, '@'))
print(insertChar(a,14, '%'))
出力として次のようになります。
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
s[:-4]