Apakah ada fungsi dalam Python yang bisa saya gunakan untuk memasukkan nilai pada posisi string tertentu?
Sesuatu seperti ini:
"3655879ACB6"
kemudian di posisi 4 tambahkan "-"
menjadi"3655-879ACB6"
Apakah ada fungsi dalam Python yang bisa saya gunakan untuk memasukkan nilai pada posisi string tertentu?
Sesuatu seperti ini:
"3655879ACB6"
kemudian di posisi 4 tambahkan "-"
menjadi"3655-879ACB6"
Jawaban:
Tidak. String Python tidak dapat diubah.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Namun, dimungkinkan untuk membuat string baru yang memiliki karakter yang disisipkan:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Ini tampaknya sangat mudah:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Namun jika Anda menyukai sesuatu seperti fungsi, lakukan ini:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Karena string tidak dapat diubah, cara lain untuk melakukannya adalah dengan mengubah string menjadi daftar, yang kemudian dapat diindeks dan dimodifikasi tanpa tipu daya pengiris. Namun, untuk mengembalikan daftar ke string, Anda harus .join()
menggunakan string kosong.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Saya tidak yakin bagaimana ini membandingkan sejauh kinerja, tetapi saya merasa lebih mudah di mata daripada solusi lainnya. ;-)
Saya telah membuat metode yang sangat berguna untuk menambahkan string pada posisi tertentu dengan Python :
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
sebagai contoh:
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, '%'))
kita akan memiliki sebagai output:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Saya pikir jawaban di atas baik-baik saja, tetapi saya akan menjelaskan bahwa ada beberapa efek samping yang tak terduga tapi bagus untuk mereka ...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
Jika indeks pos_i sangat kecil (terlalu negatif), string yang dimasukkan akan lebih dulu. Jika terlalu lama, string yang dimasukkan akan ditambahkan. Jika pos_i berada di antara -len (string_s) dan + len (string_s) - 1, string yang dimasukkan dimasukkan ke tempat yang benar.
Jika Anda ingin banyak sisipan
from rope.base.codeanalyze import ChangeCollector
c = ChangeCollector(code)
c.add_change(5, 5, '<span style="background-color:#339999;">')
c.add_change(10, 10, '</span>')
rend_code = c.get_changed()
s[:-4]