Python'da bir dizenin belirli bir yerine bir değer eklemek için kullanabileceğim herhangi bir işlev var mı?
Bunun gibi bir şey:
"3655879ACB6"sonra 4. pozisyonda "-"olmak"3655-879ACB6"
Python'da bir dizenin belirli bir yerine bir değer eklemek için kullanabileceğim herhangi bir işlev var mı?
Bunun gibi bir şey:
"3655879ACB6"sonra 4. pozisyonda "-"olmak"3655-879ACB6"
Yanıtlar:
Hayır. Python Dizeleri değişmezdir.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Ancak, eklenen karaktere sahip yeni bir dize oluşturmak mümkündür:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Bu çok kolay görünüyor:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Ancak bir işlev gibi bir şey isterseniz şu şekilde yapın:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Dizeler değişmez olduğundan, bunu yapmanın başka bir yolu, dizeyi bir listeye dönüştürmek olacaktır, bu da daha sonra herhangi bir dilimleme hilesi olmadan dizinlenebilir ve değiştirilebilir. Ancak, listeyi bir dizeye geri almak için .join()boş bir dize kullanarak kullanmanız gerekir .
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Bunun performansla nasıl karşılaştırıldığından emin değilim, ancak gözlerdeki diğer çözümlerden daha kolay olduğunu hissediyorum. ;-)
Python belirli bir konumda bir dize eklemek için çok yararlı bir yöntem yaptık :
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
Örneğin:
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, '%'))
bir çıktı olarak sahip olacağız:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Yukarıdaki cevapların iyi olduğunu düşünüyorum, ancak onlara beklenmedik ama iyi yan etkiler olduğunu açıklarım ...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
Pos_i dizini çok küçükse (çok negatif), ekleme dizesi eklenir. Çok uzunsa, ekleme dizesi eklenir. Pos_i -len (string_s) ve + len (string_s) - 1 arasındaysa, ekleme dizesi doğru yere eklenir.
Çok sayıda kesici uç istiyorsanız
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]