2012-04-05 15 views
12

alguien me dio una sintaxis para truncar una cadena como sigue:Truncado de una cadena en Python

string = "My Text String" 

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

no estoy seguro de lo que se llama (la cadena [0: 3] sintaxis), por lo que' Me costó mucho buscarlo en internet y entender cómo funciona. Hasta ahora creo que funciona de esta manera:

  • string [0: 3] # devuelve los 3 primeros caracteres de la cadena
  • string [0: -3] # devolverá los 3 últimos caracteres de la cadena
  • string [3: -3] # parece truncar los 3 primeros caracteres y los últimos 3 caracteres
  • string [1: 0] # me devuelve 2 comillas simples .... no está seguro de lo que está haciendo este
  • cadena [-1: 1] # igual que la última

De todos modos, probablemente haya otros ejemplos que puedo agregar, pero mi punto es que soy nuevo en esta funcionalidad y me pregunto cómo se llama y dónde puedo encontrar más información al respecto. Estoy seguro de que me estoy perdiendo una buena referencia en alguna parte.

Gracias por cualquier sugerencia, Mike

+3

Se llama rebanada y la operación se denomina cortar. – kindall

+3

Ver [esta famosa pregunta] (http://stackoverflow.com/questions/509211/ good-printers- for- python-slice-notation). – DSM

+0

Este diagrama, en el enlace provisto por @DSM: http://stackoverflow.com/a/509297/401828 – heltonbiker

Respuesta

18

Se llama una rebanada:

s [i: j: k]

La rebanada de s de i a j se define como la secuencia de elementos con índice k tal que i < = k < j. Si i o j es mayor que len (s), use len (s). Si se omite o None, use 0. Si j se omite o None, use len (s). Si i es mayor o igual que j, la porción está vacía.

source

+1

Muchas gracias Uku! Gracias por darle un nombre y un buen ejemplo de cómo funciona. ¡Muy apreciado! – Mike

8

Como @Uku y @thebjorn dijo que su llamada Slicing

Pero una fácil manera de pensar es considerar una cadena como una lista, por ejemplo, puede hacer:

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

Y lo mismo si desea obtener una letra específica dentro de la cadena:

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

ps .: recuerde que es basado en cero, por lo que el texto [4] devolver la quinta carta.

Usando Slice devolverá un texto "subscring" [i: j] de su cadena original donde "i" son el índice inicial (inclusive) y "j" son el índice final (exclusivo), por ejemplo:

>> 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 índice negativo es relativo al final de la cadena como hacer una sustitución del índice negativo para "len (texto) + i".

En nuestro caso len (texto) es 10, un índice negativo -1 será como usar el texto [9] para obtener el último elemento, -2 devolverá el último pero un elemento y así sucesivamente.

En los ejemplos que ha enviado, string [0: -3] debe devolver todo menos los 3 últimos caracteres y string [3: -3] debe devolver todo, pero primero y último 3 3.

espero que helpped.

Cuestiones relacionadas