stringhe sono immutabili. Ciò significa che non puoi assegnarli affatto. È possibile utilizzare la formattazione:
>>> s = 'abc{0}efg'.format('d')
>>> s
'abcdefg'
O concatenazione:
>>> s = 'abc' + 'd' + 'efg'
>>> s
'abcdefg'
o la sostituzione (grazie Odomontois per avermelo ricordato):
>>> s = 'abc0efg'
>>> s.replace('0', 'd')
'abcdefg'
Ma tenere a mente che tutti questi metodi creano copia della stringa, anziché modificarla sul posto. Se si desidera la modifica sul posto, è possibile utilizzare uno bytearray
, sebbene ciò funzioni solo per le stringhe ascii semplici, come indicato da Alexis.
>>> b = bytearray('abc0efg')
>>> b[3] = 'd'
>>> b
bytearray(b'abcdefg')
Oppure è possibile creare un elenco di caratteri e manipolarlo. Questo è probabilmente il modo più efficiente e corretta da fare frequenti, su larga scala la manipolazione di stringhe:
>>> l = list('abc0efg')
>>> l[3] = 'd'
>>> l
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> ''.join(l)
'abcdefg'
E considerare il modulo re
per le operazioni più complesse.
La formattazione delle stringhe e la manipolazione delle liste sono i due metodi che sono più probabili essere corretti ed efficienti IMO - la formattazione delle stringhe quando sono richiesti solo alcuni inserimenti e la manipolazione degli elenchi quando è necessario aggiornare frequentemente la stringa.
Anche i metodi str.replace() e re.RegexObject.sub potrebbero essere utili. – Odomontois
bytearray mi sta bene, c'è comunque la conversione da stringa a matrice di byte? – w00d
@iKid, nel codice precedente, ''abc0efg'' è una stringa, e' bytearray (' abc0efg ') 'converte quella stringa in un pertearray. Quindi sì :) – senderle