La sostituzione di un carattere da un certo indice

Come posso sostituire un carattere in una stringa a partire da un certo indice? Per esempio, voglio ottenere il punto di mezzo carattere da una stringa, come abc, e se il personaggio non è uguale al carattere, l’utente specifica, quindi voglio sostituirlo.

Qualcosa di simile a questo forse?

middle = ? # (I don't know how to get the middle of a string)

if str[middle] != char:
    str[middle].replace('')
  • come dovrebbe sostituire da questa stringa abcd ?
  • le stringhe sono immutabili, è necessario creare una nuova stringa. Sarebbe di forma slice_before_index + char + slice_after_index.
  • le stringhe in python sono immutabili… questo significa che si deve costruire una nuova stringa

 

3 Replies
  1. 22

    Come stringhe sono immutabile in Python, basta creare una nuova stringa che comprende il valore dell’indice desiderato.

    Supponendo che si dispone di una stringa s, forse s = "mystring"

    Si può rapidamente (e ovviamente) sostituire una parte in un indice desiderato, inserendo tra le “fette” di originale.

    s = s[:index] + newstring + s[index + 1:]

    È possibile trovare il mezzo per dividere la lunghezza della stringa da 2 len(s)/2

    Se stai ricevendo mistero ingressi, si dovrebbe prendere cura di gestire gli indici al di fuori del range previsto

    def replacer(s, newstring, index, nofail=False):
        # raise an error if index is outside of the string
        if not nofail and index not in xrange(len(s)):
            raise ValueError("index outside given string")
    
        # if not erroring, but the index is still not in the correct range..
        if index < 0:  # add it to the beginning
            return newstring + s
        if index > len(s):  # add it to the end
            return s + newstring
    
        # insert the new string between "slices" of the original
        return s[:index] + newstring + s[index + 1:]

    Come

    replacer("mystring", "12", 4)
    'myst12ing'
  2. 11

    Stringhe in Python sono immutabile significato non è possibile sostituire parti di essi.

    Tuttavia, è possibile creare un nuova stringa che viene modificato. Mente che questo è non semanticamente equivalente dal momento che gli altri riferimenti al vecchio stringa non essere aggiornato.

    Si può ad esempio scrivere una funzione:

    def replace_str_index(text,index=0,replacement=''):
        return '%s%s%s'%(text[:index],replacement,text[index+1:])

    E quindi, per esempio, chiamare con:

    new_string = replace_str_index(old_string,middle)

    Se non di alimentare una sostituzione, la nuova stringa non contiene il carattere che si desidera rimuovere, è possibile alimentare è una stringa di lunghezza arbitraria.

    Per esempio:

    replace_str_index('hello?bye',5)

    tornerà 'hellobye'; e:

    replace_str_index('hello?bye',5,'good')

    tornerà 'hellogoodbye'.

  3. 8

    Non è possibile sostituire una lettera in una stringa. Convertire la stringa in una lista, sostituire la lettera, e di convertire una stringa.

    >>> s = list("Hello world")
    >>> s
    ['H', 'e', 'l', 'l', 'o', ' ', 'z', 'o', 'r', 'l', 'd']
    >>> s[int(len(s) / 2)] = '-'
    >>> s
    ['H', 'e', 'l', 'l', 'o', '-', 'W', 'o', 'r', 'l', 'd']
    >>> "".join(s)
    'Hello-World'
    • Mente che non hai ancora modificato la stringa: si è creato uno nuovo. Che è una sfumatura importante.

Lascia un commento