One place for hosting & domains

      indexar

      Cómo indexar y segmentar cadenas en Python 3


      Introducción

      Los tipos de datos cadena de Python es una secuencia formada por uno o más caracteres individuales que pueden ser caracteres de letras, números, espacios en blanco o símbolos. Dado que una cadena es una secuencia, se puede acceder a ella de la misma manera que a otros tipos de datos basados en secuencias, mediante la indexación y la segmentación.

      Este tutorial explicará cómo acceder a las cadenas a través de la indexación, segmentándolas en secuencias de caracteres, y repasará algunos métodos de recuento y ubicación de caracteres.

      Cómo indexar cadenas.

      Al igual que el tipo de datos de lista que tiene elementos que corresponden a un número de índice, cada uno de los caracteres de una cadena también corresponde a un número de índice, comenzando por el número de índice 0.

      En el caso de la cadena Sammy Shark! el desglose del índice tiene el siguiente aspecto:

      SammyShark!
      01234567891011

      Como puede ver, la primera S comienza en el índice 0 y la cadena termina en el índice 11 con el símbolo ! .

      También observamos que el carácter de espacio en blanco entre Sammy y Shark también se corresponde con su propio número de índice. En este caso, el número de índice asociado con el espacio en blanco es 5.

      El punto de exclamación (!) también tiene un número de índice asociado con él. Cualquier otro símbolo o signo de puntuación, como *#$&. ;?, también es un carácter y estaría asociado a su propio número de índice.

      El hecho de que cada carácter de una cadena de Python tenga un número de índice correspondiente permite acceder y manipular las cadenas de la misma manera que se puede hacer con otros tipos de datos secuenciales.

      Acceso a caracteres según el número de índice positivo

      Al hacer referencia a los números del índice, se puede aislar uno de los caracteres de una cadena. Eso se hace poniendo los números de índice entre corchetes. Declaremos una cadena, imprimámosla e invoquemos el número de índice entre corchetes:

      ss = "Sammy Shark!"
      print(ss[4])
      

      Output

      y

      Cuando nos referimos a un número de índice concreto de una cadena, Python devuelve el carácter que se encuentra en esa posición. Dado que la letra y está en el número de índica 4 de la cadena ss = "Sammy Shark!", cuando imprimimos ss[4] recibimos y como resultado.

      Los números de índice nos permiten acceder a caracteres específicos dentro de una cadena.

      Acceso a caracteres según el número de índice negativo

      Si tenemos una cadena larga y queremos localizar un elemento al final, también podemos contar hacia atrás desde el final de la cadena, comenzando en el número de índice -1.

      En el caso de la misma cadena Sammy Shark!, el desglose del índice negativo tiene el siguiente aspecto:

      SammyShark!
      -12-11-10-9-8-7-6-5-4-3-2-1

      Usando números de índice negativos, podemos imprimir el carácter r, haciendo referencia a su posición en el índice -3, como se muestra a continuación:

      print(ss[-3])
      

      Output

      r

      Usar números de índice negativos puede ser ventajoso para aislar un solo carácter al final de una cadena larga.

      Segmentación de cadenas

      También podemos invocar un rango de caracteres de la cadena. Digamos que solo queremos imprimir la palabra Shark. Podemos hacerlo creando una rebanada, que es una secuencia de caracteres dentro de una cadena original. Con las rebanadas, podemos invocar varios valores de caracteres creando un rango de números de índice separados por dos puntos [x:y]:

      print(ss[6:11])
      

      Output

      Shark

      Cuando se crea una rebanada, como en [6:11], el primer número de índice es donde comienza la rebanada (inclusivo), y el segundo número de índice es donde termina la rebanada (exclusivo), que es el motivo por el que en nuestro ejemplo anterior el rango tiene que ser el número de índice que ocurriría justo después de que la cadena termine.

      Cuando se segmentan cadenas, se está creando una subcadena, que es esencialmente una cadena que existe dentro de otra cadena. Cuando invocamos ss[6:11], invocamos la subcadena Shark que existe dentro de la cadena Sammy Shark!.

      Si queremos incluir cualquiera de los extremos de una cadena, podemos omitir uno de los números en la sintaxis string[n:n]. Por ejemplo, si queremos imprimir la primera palabra de cadena ss, — “Sammy” — , podemos hacerlo escribiendo lo siguiente:

      print(ss[:5])
      

      Output

      Sammy

      Para eso, omitimos el número de índice antes de los dos puntos en la sintaxis de la rebanada y solo incluimos el número de índice después de los dos puntos, que hace referencia al final de la subcadena.

      Para imprimir una subcadena que comienza en el medio de una cadena y se imprime hasta el final, podemos hacerlo incluyendo solo el número de índice antes de los dos puntos, como se muestra a continuación:

      print(ss[7:])
      

      Output

      hark!

      Al incluir solo el número de índice antes de los dos puntos y dejar el segundo número de índice fuera de la sintaxis, la subcadena irá desde el carácter del número de índice invocado hasta el final de la cadena.

      También puede usar números de índice negativos para segmentar una cadena. Como ya mencionamos anteriormente, los números de índice negativos de una cadena comienzan en -1 y se cuentan hacia abajo desde ahí hasta llegar al inicio de la cadena. Al utilizar números de índice negativos, empezaremos por el número más bajo, ya que aparece antes en la cadena.

      Utilicemos dos números de índice negativos para segmentar la cadena ss:

      print(ss[-4:-1])
      

      Output

      ark

      La subcadena “ark” se imprime a partir de la cadena “Sammy Shark!” porque el carácter “a” aparece en la posición del número de índice -4, y el carácter “k” aparece justo antes de la posición del número de índice -1.

      Especificación de zancadas mientras se segmenta la cadena

      La segmentación de cadenas puede aceptar un tercer parámetro además de dos números de índice.  El tercer parámetro especifica la zancada, que hace referencia a la cantidad de caracteres que se deben seguir después de recuperar el primer carácter de la cadena. Hasta ahora, hemos omitido el parámetro zancada y Python utiliza por defecto la zancada de 1, de modo que cada carácter entre dos números de índice se recupere.

      Veamos nuevamente el ejemplo anterior que imprime la subcadena “Shark”:

      print(ss[6:11])
      

      Output

      Shark

      Podemos obtener los mismos resultados incluyendo un tercer parámetro con una zancada de 1:

      print(ss[6:11:1])
      

      Output

      Shark

      Por lo tanto, una zancada de 1 tomará cada carácter entre dos números de índice de una rebanada. Si omitimos el parámetro de zancada, Python pondrá por defecto 1.

      Si, en cambio, aumentamos la zancada, veremos que se saltan caracteres:

      print(ss[0:12:2])
      

      Output

      SmySak

      Especificar la zancada de 2 como el último parámetro en la sintaxis de Python, ss[0:12:2] se salta cualquier otro carácter. Veamos los caracteres que aparecen en rojo:

      Sammy Shark!

      Tenga en cuenta que el carácter de espacio en blanco en el número de índice 5 también se salta con una zancada de 2 especificada.

      Si usamos un número más grande para nuestro parámetro de zancada, tendremos una subcadena significativamente más pequeña:

      print(ss[0:12:4])
      

      Output

      Sya

      Especificar la zancada de 4 como el último parámetro en la sintaxis de Python, ss[0:12:4] se imprime solo uno de cada cuatro caracteres. De nuevo, veamos los caracteres que aparecen en rojo:

      Sammy Shark!

      En este ejemplo, también se omite el carácter de espacio en blanco.

      Dado que estamos imprimiendo toda la cadena, podemos omitir los dos números de índice y mantener los dos puntos dentro de la sintaxis para conseguir el mismo resultado:

      print(ss[::4])
      

      Output

      Sya

      Si se omiten los dos números de índice y se conservan los dos puntos, se mantendrá toda la cadena dentro del rango, mientras que si se añade un parámetro final para la zancada se especificará el número de caracteres que se van a saltar.

      Además, puede indicar un valor numérico negativo para la zancada, que podemos utilizar para imprimir la cadena original en orden inverso si establecemos la zancada en -1:

      print(ss[::-1])
      

      Output

      !krahS ymmaS

      Los dos puntos sin parámetro especificado incluirán todos los caracteres de la cadena original, una zancada de 1 incluirá todos los caracteres sin saltárselos, y la negación de esa zancada invertirá el orden de los caracteres.

      Hagamos esto de nuevo pero con una zancada de -2:

      print(ss[::-2])
      

      Output

      !rh ma

      En este ejemplo, ss[::-2], estamos tratando con la totalidad de la cadena original, ya que no se incluyen números de índice en los parámetros e invirtiendo la cadena a través de la zancada negativa. Además, al tener una zancada de -2 estamos saltando una de cada dos letras de la cadena invertida:

      ! krahS[espacio en blanco]ymmaS

      El carácter de espacio en blanco se imprime en este ejemplo.

      Cuando especifica el tercer parámetro de la sintaxis de segmentación de Python, está indicando la zancada de la subcadena que está sacando de la cadena original.

      Métodos de conteo

      Mientras pensamos en los números de índice relevantes que corresponden a los caracteres dentro de las cadenas, vale la pena repasar algunos de los métodos que cuentan cadenas o devuelven números de índice. Esto puede ser útil para limitar el número de caracteres que queremos aceptar dentro de un formulario de entrada del usuario, o para comparar cadenas. Igual que otros tipos de datos secuenciales, las cadenas se pueden segmentar mediante diversos métodos.

      Primero, veremos el método len() que puede obtener la longitud de cualquier tipo de datos que sea una secuencia, ya sea ordenada o desordenada, incluyendo cadenas, listas, tuplas y diccionarios.

      Vamos a imprimir la longitud de la cadena ss:

      print(len(ss))
      

      Output

      12

      La longitud de la cadena “Sammy Shark!” es de 12 caracteres de largo, incluyendo el carácter de espacio en blanco y el símbolo de exclamación.

      En vez de usar una variable, también podemos pasar una cadena directamente al método len():

      print(len("Let's print the length of this string."))
      

      Output

      38

      El método len() cuenta el número total de caracteres dentro de una cadena.

      Si queremos contar el número de veces que aparece un carácter en particular o una secuencia de caracteres en una cadena, podemos hacerlo con el método str.count(). Usemos nuestra cadena ss = "Sammy Shark!" y contemos el número de veces que aparece el carácter “a”:

      print(ss.count("a"))
      

      Output

      2

      Podemos buscar otro carácter:

      print(ss.count("s"))
      

      Output

      0

      Aunque la letra “S” está en la cadena, es importante tener en cuenta que cada carácter distingue entre mayúsculas y minúsculas. Si queremos buscar todas las letras de una cadena independientemente de las mayúsculas y minúsculas, podemos usar el método str.lower() para convertir todos los caracteres de la cadena en mayúsculas primero. Puede obtener más información sobre este método en “Introducción a los métodos de cadena en Python 3”.

      Probemos str.count() con una secuencia de caracteres:

      likes = "Sammy likes to swim in the ocean, likes to spin up servers, and likes to smile."
      print(likes.count("likes"))
      

      Output

      3

      En la cadena likes, la secuencia de caracteres que equivale a “likes” aparece 3 veces en la cadena original.

      También podemos encontrar en qué posición de la cadena aparece un carácter o secuencia de caracteres. Podemos hacerlo con el método str.find() y devolverá la posición del carácter según el número de índice.

      Podemos comprobar dónde aparece la primera “m” en la cadena ss:

      print(ss.find("m"))
      

      Ouput

      2

      El primer carácter “m” aparece en la posición de índice de 2 en la cadena “Sammy Shark!” Podemos revisar las posiciones del número de índice de la cadena ss anterior.

      Veamos dónde se encuentra la primera secuencia de caracteres “likes” en la cadena likes:

      print(likes.find("likes"))
      

      Ouput

      6

      La primera instancia de la secuencia de caracteres “likes” comienza en la posición del número de índice 6, que es donde se encuentra el carácter I de la secuencia likes.

      ¿Qué pasa si queremos ver dónde comienza la segunda secuencia de “likes”? Podemos hacerlo pasando un segundo parámetro al método str.find() que comenzará en un número de índice determinado. Por lo tanto, en vez de comenzar por el principio de la cadena, vamos a comenzar después del número de índice 9:

      print(likes.find("likes", 9))
      

      Output

      34

      En este segundo ejemplo que comienza en el número de índice 9, la primera aparición de la secuencia de caracteres “likes” comienza en el número de índice 34.

      Además, podemos especificar un final al rango como tercer parámetro. Igual que la segmentación, podemos hacerlo contando hacia atrás usando un número de índice negativo:

      print(likes.find("likes", 40, -6))
      

      Output

      64

      Este último ejemplo busca la posición de la secuencia “likes” entre los números de índice 40 y -6. Dado que el último parámetro ingresado es un número negativo, se contará desde el final de la cadena original.

      Los métodos de cadena de len(), str.count() y str.find() pueden usarse para determinar la longitud, el conteo de caracteres o secuencias de caracteres, y las posiciones de índice de los caracteres o secuencias de caracteres dentro de las cadenas.

      Conclusión

      Poder invocar números de índice específicos de cadenas o una porción en particular de una cadena, brinda una mayor flexibilidad al trabajar con este tipo de datos. Dado que las cadenas, como las listas y las tuplas son un tipo de datos basados en secuencias, se puede acceder a ella mediante la indexación y la segmentación.

      Puede obtener más información sobre el formato de las cadenas y los métodos de cadena para continuar aprendiendo sobre las cadenas.



      Source link

      Cómo indexar, dividir y manipular cadenas en JavaScript


      Introducción

      Una cadena es una secuencia de uno o más caracteres que pueden ser letras, números o símbolos. Se puede acceder a cada carácter de una cadena de JavaScript mediante un número de índice, y todas las cadenas tienen métodos y propiedades disponibles para ellas.

      En este tutorial, aprenderemos la diferencia entre las primitivas de cadena y el objeto String, cómo indexar cadenas, cómo acceder a los caracteres de una cadena, y las propiedades y métodos comunes utilizados en las cadenas.

      Las primitivas de cadena y los objetos String

      Primero, aclararemos los dos tipos de cadenas. JavaScript distingue entre la primitiva de cadena, un tipo de datos inmutable, y el objeto String.

      Para probar la diferencia entre ambos tipos, inicializaremos una primitiva de cadena y un objeto de cadena.

      // Initializing a new string primitive
      const stringPrimitive = "A new string.";
      
      // Initializing a new String object
      const stringObject = new String("A new string.");  
      

      Podemos usar el operador typeof para determinar el tipo de un valor. En el primer ejemplo, simplemente asignamos una cadena a una variable.

      typeof stringPrimitive;
      

      Output

      string

      En el segundo ejemplo, usamos new String() para crear un objeto de cadena y asignarlo a una variable.

      typeof stringObject;
      

      Output

      object

      La mayoría de veces se crearán primitivas de cadena. JavaScript puede acceder y usar las propiedades y los métodos incorporados de la envoltura de objetos String sin cambiar realmente la primitiva de cadena que se creó en un objeto.

      Aunque este concepto es un poco desafiante al principio, debe tener en cuenta la diferencia entre primitivos y objetos. Esencialmente, hay métodos y propiedades disponibles para todas las cadenas, y en segundo plano JavaScript realizará una conversión a objeto y de vuelta a primitivo cada vez que se invoque un método o propiedad.

      Cómo se indexan las cadenas

      Cada uno de los caracteres de una cadena corresponden a un número de índice, comenzando por 0.

      Para demostrarlo, crearemos una cadena con el valor How are you?.

      HowAreyou?
      01234567891011

      El primer carácter de la cadena es H, que corresponde al índice 0. El último carácter es ?, que corresponde a 11. Los caracteres de espacio en blanco también tienen un índice, el 3 y 7.

      El hecho de poder acceder a todos los caracteres de una cadena nos permite trabajar con ella y manipularla de varias maneras.

      Acceso a los caracteres

      Vamos a demostrar cómo acceder a los caracteres e índices con la cadena How are you? .

      "How are you?";
      

      Utilizando la notación de corchetes, podemos acceder a cualquier carácter de la cadena.

      "How are you?"[5];
      

      Output

      r

      También podemos usar el método charAt() para devolver el carácter usando el número de índice como parámetro.

      "How are you?".charAt(5);
      

      Output

      r

      De manera alternativa, podemos usar indexOf() para devolver el número de índice por la primera instancia de un carácter.

      "How are you?".indexOf("o");
      

      Output

      1

      Aunque “o” aparece dos veces en la cadena How are you?, indexOf() obtendrá la primera instancia.

      lastIndexOf() se utiliza para encontrar la última instancia.

      "How are you?".lastIndexOf("o");
      

      Output

      9

      Para ambos métodos, también puede buscar varios caracteres en la cadena. Devolverá el número de índice del primer carácter de la instancia.

      "How are you?".indexOf("are");
      

      Output

      4

      Por otro lado, el método slice() devuelve los caracteres entre dos números de índice. El primer parámetro será el número de índice de inicio y el segundo parámetro será el número de índice donde debe terminar.

      "How are you?".slice(8, 11);
      

      Output

      you

      Tenga en cuenta que 11 es ?, pero ? no forma parte del resultado devuelto. slice() devolverá lo que está en el medio, pero no incluirá el último parámetro.

      Si no se incluye un segundo parámetro, slice() devolverá todo en el resultado, desde el parámetro hasta el final de la cadena.

      "How are you?".slice(8);
      

      Output

      you?

      Para resumir, charAt() y slice() ayudarán a devolver valores de cadena basados en números de índice, e indexOf() y lastIndexOf() harán lo opuesto y devolverán los números de índice basados en los caracteres de cadena proporcionados.

      Búsqueda de la longitud de una cadena

      Al usar la propiedad length, podemos devolver el número de caracteres en una cadena.

      "How are you?".length;
      

      Output

      12

      Recuerde que la propiedad length devuelve el número real de caracteres comenzando por 1, que salen en 12, no el número de índice final, que comienza en 0 y termina en 11.

      Conversión a mayúsculas o minúsculas

      Los dos métodos incorporados toUpperCase() y toLowerCase() son formas útiles de dar formato al texto y hacer comparaciones textuales en JavaScript.

      toUpperCase() convertirá todos los caracteres en mayúsculas.

      "How are you?".toUpperCase();
      

      Output

      HOW ARE YOU?

      toLowerCase() convertirá todos los caracteres en minúsculas.

      "How are you?".toLowerCase();
      

      Output

      how are you?

      Estos dos métodos para crear formato no requieren parámetros adicionales.

      Cabe destacar que estos métodos no modifican la cadena original.

      División de cadenas

      JavaScript tiene un método muy útil para dividir una cadena por un carácter y crear una nueva matriz desde las secciones. Usaremos el método split() para separar la matriz por un carácter de espacio en blanco, representado por " ".

      const originalString = "How are you?";
      
      // Split string by whitespace character
      const splitString = originalString.split(" ");
      
      console.log(splitString);
      

      Output

      [ 'How', 'are', 'you?' ]

      Ahora que tenemos una nueva matriz en la variable splitString, podemos acceder a cada sección con un número de índice.

      splitString[1];
      

      Output

      are

      Si se proporciona un parámetro vacío, split() creará una matriz separada por comas con cada carácter de la cadena.

      Al dividir cadenas, se puede determinar la cantidad de palabras en una frase y usar el método como una forma de determinar los nombres y apellidos de las personas, por ejemplo.

      Recorte de espacios en blanco

      El método trim() de JavaScript elimina los espacios en blanco de los dos extremos de una cadena, pero no en el medio de la misma. Los espacios en blanco pueden ser tabulaciones o espacios.

      const tooMuchWhitespace = "     How are you?     ";
      
      const trimmed = tooMuchWhitespace.trim();
      
      console.log(trimmed);
      

      Output

      How are you?

      El método trim() es una forma sencilla de realizar la tarea común de eliminar el exceso de espacios en blanco.

      Búsqueda y sustitución de valores de cadenas

      Podemos buscar un valor en una cadena y sustituirlo por un nuevo valor usando el método replace(). El primer parámetro será el valor que a encontrar, y el segundo parámetro será el valor a sustituir.

      const originalString = "How are you?"
      
      // Replace the first instance of "How" with "Where"
      const newString = originalString.replace("How", "Where");
      
      console.log(newString);
      

      Output

      Where are you?

      Además de poder sustituir un valor con otro valor de cadena, también podemos usar las Expresiones regulares para hacer que replace() sea más potente. Por ejemplo, replace() solo afecta al primer valor, pero podemos usar el indicador (global) g para capturar todas las instancias de un valor y el indicador (que no distingue entre mayúsculas y minúsculas) i para ignorar las mayúsculas y minúsculas.

      const originalString = "Javascript is a programming language. I'm learning javascript."
      
      // Search string for "javascript" and replace with "JavaScript"
      const newString = originalString.replace(/javascript/gi, "JavaScript");
      
      console.log(newString);
      

      Output

      JavaScript is a programming language. I'm learning JavaScript.

      Esta es una tarea muy común que utiliza las Expresiones regulares. Visite Regexr para practicar más ejemplos de expresiones regulares (RegEx).

      Conclusión

      Las cadenas son uno de los tipos de datos usados con mayor frecuencia, y hay muchas cosas que podemos hacer con ellas.

      En este tutorial, aprendimos la diferencia entre una primitiva de cadena y un objeto String, cómo indexar las cadenas y cómo utilizar los métodos y propiedades incorporados de las cadenas para acceder a los caracteres, dar formato al texto y las cadenas (encontrando) formateando, y encontrar y reemplazar valores.

      Para una descripción más general sobre las cadenas, consulte el tutorial “Cómo trabajar con cadenas en JavaScript”.



      Source link

      Como indexar e fatiar strings em Python 3


      Introdução

      O tipo de dados string do Python é uma sequência composta por um ou mais caracteres individuais, que consistem em letras, números, caracteres de espaço em branco ou símbolos. Como uma string é uma sequência, ela pode ser acessada das mesmas maneiras que outros tipos de dados baseados em sequências o são, através da indexação e divisão.

      Este tutorial ensinará como acessar strings através da indexação e dividir suas sequências de caracteres, e abordará alguns métodos de contagem e localização de caracteres.

      Como as strings são indexadas

      Assim como o tipo de dados lista, que possui itens que correspondem a um número de índice, cada um dos caracteres de uma string também correspondem a um número de índice, começando com o número de índice 0.

      Para a string Sammy Shark! o detalhamento do índice se parece com isto:

      SAMMyShArk!
      01234567891011

      Como se vê, o primeiro S começa no índice 0, e a string termina no índice 11 com o símbolo !

      Também notamos que o caractere de espaço em branco entre Sammy e Shark também corresponde com seu próprio número de índice. Neste caso, o número de índice associado ao espaço em branco é 5.

      O ponto de exclamação (!) também possui um número de índice associado a ele. Qualquer outro símbolo ou sinal de pontuação, como *#$&. ;?, também é um caractere e estaria associado ao seu próprio número de índice.

      O fato de cada caractere em uma string Python possuir um número de índice correspondente nos permite acessar e manipular strings das mesmas maneiras que faríamos com outros tipos de dados sequenciais.

      Acessando caracteres por um número de índice positivo

      Ao referenciar os números de índice, podemos isolar um dos caracteres em uma string. Fazemos isso colocando os números de índice entre colchetes. Vamos declarar uma string e imprimi-la, e então chamar o número de índice entre colchetes:

      ss = "Sammy Shark!"
      print(ss[4])
      

      Output

      y

      Quando nos referimos a um número de índice específico de uma string, o Python retorna o caractere que está naquela posição. Como a letra y está no índice de número 4 da string ss = "Sammy Shark!", quando imprimimos ss[4], recebemos y como resultado.

      Os números de índice nos permitem acessar caracteres específicos dentro de uma string.

      Acessando caracteres por um número de índice negativo

      Se tivermos uma string longa e quisermos selecionar um item perto do final, também podemos contar de trás para frente a partir do final da string, começando no número de índice -1.

      Para a mesma string Sammy Shark! o detalhamento do índice negativo se parece com isto:

      SAMMyShArk!
      -12-11-10-9-8-7-6-5-4-3-2-1

      Ao usar números de índice negativos, podemos imprimir o caractere r, referindo-nos à sua posição de -3 no índice, desta forma:

      print(ss[-3])
      

      Output

      r

      O uso de números de índice negativos pode ser vantajoso para isolar um único caractere no final de uma string longa.

      Dividindo strings

      Também podemos chamar uma faixa de caracteres da string. Suponha que queiramos imprimir apenas a palavra Shark. Podemos fazer isso criando uma slice (fatia), que é uma sequência de caracteres dentro de uma string original. Com fatias, podemos chamar diversos valores de caracteres criando uma faixa de números de índice separados por dois pontos [x:y]:

      print(ss[6:11])
      

      Output

      Shark

      Ao construir uma fatia, como em [6:11], o primeiro número de índice é onde ela começa (com ele incluso), e o segundo número de índice é onde a fatia termina (sem ele incluso), razão pela qual no nosso exemplo acima o intervalo precisa terminar com o número de índice que ocorreria logo após a string terminar.

      Ao dividir strings, estamos criando uma substring, que é essencialmente uma string que existe dentro de outra string. Quando chamamos ss[6:11], estamos chamando a substring Shark existente dentro da string Sammy Shark!.

      Se quisermos incluir qualquer uma das extremidades de uma string, podemos omitir um dos números na sintaxe string[n:n]. Por exemplo, se quisermos imprimir a primeira palavra da string ss — “Sammy” — podemos fazer isso digitando:

      print(ss[:5])
      

      Output

      Sammy

      Fizemos isso omitido o número do índice antes dos dois pontos na sintaxe de fatia e incluindo apenas o número de índice após os dois pontos, que se referem ao final da substring.

      Para imprimir uma substring que começa no meio de uma string e vai até o seu final, podemos incluir apenas o número de índice antes dos dois pontos, desta forma:

      print(ss[7:])
      

      Output

      hark!

      Ao incluir apenas o número de índice antes dos dois pontos, deixando o segundo número de índice fora da sintaxe, a substring será iniciada no caractere do número de índice chamado e irá até o final da string.

      Também é possível usar números de índice negativos para dividir uma string. Conforme mostramos anteriormente, os números de índice negativos de uma string começam em -1 e vão sendo contados regressivamente até o início da string. Ao usar números de índice negativos, começamos com o número menor primeiro, uma vez que ele ocorre mais cedo na string.

      Vamos usar dois números de índice negativos para dividir a string ss:

      print(ss[-4:-1])
      

      Output

      ark

      A substring “ark” é impressa a partir da string “Sammy Shark!” porque o caractere “a” ocorre na posição de número de índice -4 e o caractere “k” ocorre logo antes da posição de número de índice -1.

      Especificando o deslocamento ao dividir strings

      A divisão de strings pode aceitar um terceiro parâmetro, além dos dois números de índice. O terceiro parâmetro especifica o stride (deslocamento), que diz respeito a quantos caracteres devem ser pulados após o primeiro caractere ser recuperado da string. Até agora, omitimos o parâmetro stride e o Python utiliza o valor padrão do stride de 1, para que todos os caracteres entre dois números de índice sejam recuperados.

      Vamos observar novamente o exemplo acima que imprime a substring “Shark”:

      print(ss[6:11])
      

      Output

      Shark

      Podemos obter os mesmos resultados incluindo um terceiro parâmetro com um deslocamento de 1:

      print(ss[6:11:1])
      

      Output

      Shark

      Assim, um deslocamento de 1 irá abranger todos os caracteres entre dois números de índice de uma fatia. Se omitirmos o parâmetro deslocamento, então o Python usará o padrão 1.

      Se, ao invés disso, aumentarmos o deslocamento, veremos que os caracteres são ignorados:

      print(ss[0:12:2])
      

      Output

      SmySak

      Especificar o deslocamento de 2 como o último parâmetro na sintaxe do Python ss[0:12:2] ignora um caractere a cada dois. Vamos ver os caracteres que são impressos em vermelho:

      Sammy Shark!!

      Note que o caractere de espaço em branco no número de índice 5 também é ignorado com um deslocamento especificado de 2.

      Se usarmos um número maior para nosso parâmetro de deslocamento, teremos uma substring significativamente menor:

      print(ss[0:12:4])
      

      Output

      Sya

      Especificar o deslocamento de 4 como o último parâmetro na sintaxe do Python ss[0:12:4] imprime apenas um a cada quatro caracteres. Mais uma vez, vamos ver os caracteres que são impressos em vermelho:

      Sammy Shark!

      Neste exemplo, o caractere de espaço em branco também é ignorado.

      Como estamos imprimindo toda a string, podemos omitir os dois números de índice e manter os dois sinais de dois pontos dentro da sintaxe para alcançar o mesmo resultado:

      print(ss[::4])
      

      Output

      Sya

      Omitir os dois números de índice mantendo os dois pontos irá considerar a string inteira dentro do intervalo, ao mesmo tempo que adicionando um parâmetro final para o deslocamento especificará o número de caracteres a serem pulados.

      Além disso, é possível indicar um valor numérico negativo para o stride, que podemos usar para imprimir a string original em ordem reversa se definirmos o deslocamento para -1:

      print(ss[::-1])
      

      Output

      !krahS ymmaS

      Os dois sinais de dois pontos sem parâmetro especificado incluirão todos os caracteres da string original, um deslocamento de 1 incluirá todos os caracteres sem pular nenhum, e o deslocamento negativo inverterá a ordem dos caracteres.

      Vamos fazer isso novamente mas com um deslocamento de -2:

      print(ss[::-2])
      

      Output

      !rh ma

      Neste exemplo, ss[:-2], estamos lidando com a totalidade da string original, uma vez que nenhum número de índice foi incluído nos parâmetros e invertendo a string ao utilizar o deslocamento negativo. Além disso, por termos um deslocamento de -2, estamos ignorando um caractere a cada dois na string invertida:

      ! krahS[whitespace]ymmaS

      O caractere de espaço em branco é impresso neste exemplo.

      Ao especificar o terceiro parâmetro da sintaxe de fatia do Python, você está indicando o deslocamento da substring que está sendo gerada a partir da string original.

      Métodos de contagem

      Enquanto estamos pensando nos números de índice relevantes que correspondem a caracteres dentro de strings, vale a pena abordar alguns dos métodos que contam strings ou retornam números de índice. Isso pode ser útil para limitar o número de caracteres que gostaríamos de aceitar dentro de um formulário com entradas de usuário, ou comparar strings. Assim como outros tipos de dados sequenciais, as strings podem ser contadas com a utilização de vários métodos.

      Vamos primeiro ver o método len(), que pode obter o comprimento de qualquer tipo de dados que seja uma sequência, ordenada ou não ordenada, incluindo strings, listas, tuplas e dicionários.

      Vamos imprimir o comprimento da string ss:

      print(len(ss))
      

      Output

      12

      O comprimento da string “Sammy Shark!” é de 12 caracteres, incluindo o caractere de espaço em branco e o símbolo de ponto de exclamação.

      Ao invés de usar uma variável, podemos também passar uma string diretamente para o método len():

      print(len("Let's print the length of this string."))
      

      Output

      38

      O método len() conta o número total de caracteres dentro de uma string.

      Se quisermos contar o número de vezes que um caractere em particular ou uma sequência de caracteres aparece em uma string, fazemos isso com o método str.count(). Vamos trabalhar com nossa string ss = "Sammy Shark!" e contar o número de vezes que o caractere “a” aparece:

      print(ss.count("a"))
      

      Output

      2

      Podemos pesquisar por outro caractere:

      print(ss.count("s"))
      

      Output

      0

      Embora a letra “S” esteja na string, é importante lembrar que todo caractere possui distinção entre maiúsculas e minúsculas. Se quisermos pesquisar todas as letras em uma string desconsiderando se são maiúsculas ou minúsculas, podemos usar primeiro o método str.lower() para converter a string inteira para letras minúsculas. Leia mais sobre esse método em “Uma introdução aos métodos de string em Python 3.”

      Vamos tentar o str.count() com uma sequência de caracteres:

      likes = "Sammy likes to swim in the ocean, likes to spin up servers, and likes to smile."
      print(likes.count("likes"))
      

      Output

      3

      Na string likes, a sequência de caracteres equivalente a “likes” ocorre 3 vezes na string original.

      Também podemos descobrir em qual posição um caractere ou sequência de caracteres ocorre em uma string. Podemos fazer isso com o método str.find(), e ele retornará a posição do caractere com base em seu número de índice.

      Podemos verificar quando o primeiro “m” ocorre na string ss:

      print(ss.find("m"))
      

      Ouput

      2

      O primeiro caractere “m” ocorre na posição de índice 2 na string “Sammy Shark!” Podemos revisar as posições dos números de índice da string ss acima.

      Vamos ver onde a primeira sequência de caracteres “likes” ocorre na string likes:

      print(likes.find("likes"))
      

      Ouput

      6

      A primeira ocorrência da sequência de caracteres “likes” começa na posição de número de índice 6, que é onde o caractere l da sequência likes está posicionado.

      E se quisermos ver onde a segunda sequência de “likes” começa? Podemos fazer isso passando um segundo parâmetro ao método str.find(), que começará em um número de índice em particular. Assim, ao invés de começar no início da string vamos começar após o número de índice 9:

      print(likes.find("likes", 9))
      

      Output

      34

      Neste segundo exemplo que começa no número de índice 9, a primeira ocorrência da sequência de caracteres “likes” começa no número de índice 34.

      Além disso, podemos especificar um final para o intervalo como um terceiro parâmetro. Assim como na divisão em fatias, podemos fazer isso contando de trás para frente usando um número de índice negativo:

      print(likes.find("likes", 40, -6))
      

      Output

      64

      Este último exemplo procura a posição da sequência “likes” entre os números de índice 40 e -6. Como o parâmetro final inserido é um número negativo, ele contará a partir do final da string original.

      Os métodos de string len(), str.count() e str.find() podem ser usados para determinar o comprimento, contagens de caracteres ou sequências de caracteres, e o índice das posições dos caracteres ou sequências de caracteres dentro de strings.

      Conclusão

      A capacidade de chamar números de índice específicos das strings, ou uma fatia em particular de uma string oferece uma maior flexibilidade ao trabalhar com esse tipo de dados. Como as strings são um tipo de dados baseado em sequências, assim como as listas e tuplas, elas podem ser acessadas através da indexação e divisão em fatias.

      Leia mais sobre a formatação de strings e métodos de strings para continuar aprendendo sobre as strings.



      Source link