2012-04-05 13 views
12

Qualcuno mi ha dato una sintassi per troncare una stringa come segue:troncamento una stringa in pitone

string = "My Text String" 

print string [0:3] # This is just an example 

io non sono sicuro di ciò che questo è chiamato (la stringa [0: 3] sintassi), così ho' Ho avuto difficoltà a cercare su Internet e capire come funziona. Finora penso che funziona così:

  • string [0: 3] # restituisce i primi 3 caratteri della stringa
  • string [0: -3] # restituirà gli ultimi 3 caratteri della stringa
  • string [3: -3] # sembra troncare i primi 3 caratteri e gli ultimi 3 caratteri
  • string [1: 0] # mi restituisce 2 virgolette singole .... non sono sicuro che questo sta facendo
  • string [-1: 1] # uguale all'ultimo.

Comunque, ci sono probabilmente alcuni altri esempi che posso aggiungere, ma il mio punto è che sono nuovo a questa funzionalità e mi chiedo come si chiama e dove posso trovare maggiori informazioni su questo. Sono sicuro che mi manca solo una buona referenza da qualche parte.

Grazie per qualsiasi suggerimento, Mike

+3

Si chiama slice e l'operazione si chiama slicing. – kindall

+3

Vedere [questa famosa domanda] (http://stackoverflow.com/questions/509211/good-primer-for-python-slice-notation). – DSM

+0

Questo diagramma, nel collegamento fornito da @DSM: http://stackoverflow.com/a/509297/401828 – heltonbiker

risposta

18

Si chiama una fetta:

s [i: j: k]

La fetta di s da i a j è definito come la sequenza di articoli con indice k tale che i < = k < j. Se i o j è maggiore di len (s), utilizzare len (s). Se i viene omesso o Nessuno, utilizzare 0. Se j è omesso o Nessuno, usare len (s). Se i è maggiore o uguale a j, la sezione è vuota.

source

+1

Grazie mille Uku! Grazie per avergli dato un nome e un buon esempio su come funziona. Molto apprezzato! – Mike

8

Come @Uku e @thebjorn ha detto la sua chiamata Slicing

Ma un semplice modo di pensare è quello di considerare una stringa come una lista, ad esempio, si può fare:

text = 'Any String' 
for letter in text: 
    print letter 

E lo stesso se si vuole ottenere una lettera specifica all'interno della stringa:

>> text = 'Any String' 
>> text[4] 
'S' 

ps .: Ricordate che è pari a zero basa, quindi il testo [4] tornare il 5 ° lettera.

Utilizzando Slice restituirà un testo "sottostringa" [i: j] dalla stringa originale dove "i" è l'indice iniziale (incluso) e "j" sono l'indice finale (esclusivo), ad esempio:

>> text = 'Any String' 
>> text[4:6] # from index 4 to 6 exclusive, so it returns letters from index 4 and 5 
'St' 
>> text[0:4] 
'Any ' 
>> text[:4] # omiting the "i" index means i = 0 
'Any ' 
>> text[4:] # omitting the "j" index means until the end of the string 

un indice negativo è relativo alla fine della stringa come fare un cambio dall'indice negativo "len (testo) + i".

Nel nostro caso len (testo) è 10, un indice negativo -1 sarà come utilizzare il testo [9] per ottenere l'ultimo elemento, -2 restituirà l'ultimo ma un elemento e così via.

Negli esempi che hai inviato, string [0: -3] dovrebbe restituire tutto, ma gli ultimi 3 caratteri e string [3: -3] dovrebbe restituire tutto, ma prima 3 e l'ultimo 3.

spero che helpped.

Problemi correlati