Existe-t-il une fonction dans Python que je puisse utiliser pour insérer une valeur à une certaine position d'une chaîne?
Quelque chose comme ça:
"3655879ACB6"
puis en position 4 ajoutez "-"
pour devenir "3655-879ACB6"
Non. Python Les chaînes sont immuables.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Il est cependant possible de créer une nouvelle chaîne contenant le caractère inséré:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Cela semble très facile:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Cependant, si vous aimez quelque chose comme une fonction, faites comme ceci:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Comme les chaînes sont immuables, une autre façon de le faire serait de transformer la chaîne en une liste, qui peut ensuite être indexée et modifiée sans tricherie de découpage. Cependant, pour ramener la liste à une chaîne, vous devez utiliser .join()
en utilisant une chaîne vide.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Je ne sais pas comment cela se compare en termes de performances, mais j'estime que c'est plus facile pour les yeux que pour les autres solutions. ;-)
Fonction simple pour accomplir ceci:
def insert_str(string, str_to_insert, index):
return string[:index] + str_to_insert + string[index:]
J'ai fait un très utile méthode pour ajouter une chaîne dans une certaine position en Python:
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
par exemple:
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, '%'))
nous aurons comme sortie:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Si vous voulez beaucoup d'inserts
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()