format python C'è un modo per sottostrare una stringa?



5 Answers

Solo per completezza come nessun altro ha menzionato. Il terzo parametro per una sezione di matrice è un passo. Quindi invertire una stringa è semplice come:

some_string[::-1]

O selezionando caratteri alternativi sarebbe:

"H-e-l-l-o- -W-o-r-l-d"[::2] # outputs "Hello World"

La possibilità di andare avanti e indietro attraverso la stringa mantiene la coerenza con la possibilità di allineare una fetta dall'inizio o dalla fine.

python string replace

C'è un modo per eseguire la sottostringa di una stringa in Python, per ottenere una nuova stringa dal 3 ° carattere alla fine della stringa?

Forse come myString[2:end] ?

Se lasciare la seconda parte significa 'fino alla fine', se si abbandona la prima parte, inizia dall'inizio?




Un modo comune per raggiungere questo obiettivo è l'affettamento delle stringhe. MyString[a:b] ti fornisce una sottostringa dall'indice a a (b - 1)




C'è un modo per eseguire la sottostringa di una stringa in Python, per ottenere una nuova stringa dal 3 ° carattere alla fine della stringa?

Forse come myString[2:end] ?

Sì, questo in realtà funziona se assegni, o bind , il nome, la end , a singleton costante, None :

>>> end = None
>>> myString = '1234567890'
>>> myString[2:end]
'34567890'

La notazione Slice ha 3 argomenti importanti:

  • inizio
  • Stop
  • passo

Le loro impostazioni predefinite quando non vengono fornite sono None , ma possiamo passarle esplicitamente:

>>> stop = step = None
>>> start = 2
>>> myString[start:stop:step]
'34567890'

Se lasciare la seconda parte significa 'fino alla fine', se si abbandona la prima parte, inizia dall'inizio?

Sì, ad esempio:

>>> start = None
>>> stop = 2
>>> myString[start:stop:step]
'12'

Nota che includiamo l'avvio nella sezione, ma andiamo solo fino a, e non includendo, stop.

Quando il passo è None , per impostazione predefinita la sezione utilizza 1 per il passo. Se passi con un intero negativo, Python è abbastanza intelligente da andare dall'inizio alla fine.

>>> myString[::-1]
'0987654321'

Spiego dettagliatamente la notazione delle sezioni nella mia risposta a Spiega la notazione della sezione Domanda.




Vorrei aggiungere due punti alla discussione:

  1. Puoi utilizzare None invece su uno spazio vuoto per specificare "dall'inizio" o "fino alla fine":

    'abcde'[2:None] == 'abcde'[2:] == 'cde'
    

    Ciò è particolarmente utile nelle funzioni, dove non è possibile fornire uno spazio vuoto come argomento:

    def substring(s, start, end):
        """Remove `start` characters from the beginning and `end` 
        characters from the end of string `s`.
    
        Examples
        --------
        >>> substring('abcde', 0, 3)
        'abc'
        >>> substring('abcde', 1, None)
        'bcde'
        """
        return s[start:end]
    
  2. Python ha oggetti slice :

    idx = slice(2, None)
    'abcde'[idx] == 'abcde'[2:] == 'cde'
    



È piuttosto semplice:

s = 'Hello, World!'
print(s[:]) # prints "Hello, World!"
print(s[:5]) # prints Hello
print(s[5:]) # prints , World!
print(s[3:7]) # prints "lo, "



Related