Esiste una funzione in Python che posso usare per inserire un valore in una determinata posizione di una stringa?
Qualcosa come questo:
"3655879ACB6"
quindi in posizione 4 aggiungi "-"
per diventare"3655-879ACB6"
Esiste una funzione in Python che posso usare per inserire un valore in una determinata posizione di una stringa?
Qualcosa come questo:
"3655879ACB6"
quindi in posizione 4 aggiungi "-"
per diventare"3655-879ACB6"
Risposte:
No. Le stringhe di Python sono immutabili.
>>> s='355879ACB6'
>>> s[4:4] = '-'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment
Tuttavia, è possibile creare una nuova stringa con il carattere inserito:
>>> s[:4] + '-' + s[4:]
'3558-79ACB6'
Questo sembra molto semplice:
>>> hash = "355879ACB6"
>>> hash = hash[:4] + '-' + hash[4:]
>>> print hash
3558-79ACB6
Tuttavia, se ti piace qualcosa come una funzione, fai come segue:
def insert_dash(string, index):
return string[:index] + '-' + string[index:]
print insert_dash("355879ACB6", 5)
Dato che le stringhe sono immutabili, un altro modo per farlo sarebbe quello di trasformare la stringa in un elenco, che può quindi essere indicizzato e modificato senza alcun trucco. Tuttavia, per riportare l'elenco in una stringa dovresti usare .join()
usando una stringa vuota.
>>> hash = '355879ACB6'
>>> hashlist = list(hash)
>>> hashlist.insert(4, '-')
>>> ''.join(hashlist)
'3558-79ACB6'
Non sono sicuro di come questo possa essere paragonato alle prestazioni, ma penso che sia più facile per gli occhi rispetto alle altre soluzioni. ;-)
Ho creato un metodo molto utile per aggiungere una stringa in una certa posizione in Python :
def insertChar(mystring, position, chartoinsert ):
longi = len(mystring)
mystring = mystring[:position] + chartoinsert + mystring[position:]
return mystring
per esempio:
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, '%'))
avremo come output:
-Jorgesys was here!
Jorgesys @was here!
Jorgesys was h%ere!
Penso che le risposte di cui sopra vadano bene, ma spiegherei che ci sono alcuni effetti collaterali inaspettati ma buoni per loro ...
def insert(string_s, insert_s, pos_i=0):
return string_s[:pos_i] + insert_s + string_s[pos_i:]
Se l'indice pos_i è molto piccolo (troppo negativo), la stringa di inserimento viene anteposta. Se troppo lungo, la stringa di inserimento viene aggiunta. Se pos_i è compreso tra -len (string_s) e + len (string_s) - 1, la stringa di inserimento viene inserita nella posizione corretta.
Se vuoi molti inserti
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]