Como comparar string em python

Nesta aula, aprenderemos, como funciona a comparação de string no Python, e também, veremos o como que é definido, internamente, quando é solicitado a relação entre 2 caracteres.

Para entendermos como o Python estabelece a relação entre 2 caracteres, precisamos entender alguns conceitos sobre o princípio da computação. Então, nessa aula, iremos estudar alguns conceitos que não estão relacionados diretamente a linguagem Python, e sim, a computação propriamente dita.

A seguir, temos um código de "degustação", onde as expressões serão o resultado da relação entre 2 caracteres.

>>> "A" == "A" True >>> "b" == "b" True >>> "a" > "c" False >>> "C" > "a" False

A tabela ASCII contém os caracteres vinculados a um número inteiro positivo. Essa tabela decorre do fato de que o computador só manipula números, logo, cada caractere, possui, um número que o identifique.

O termo ASCII é um acrônimo de American Standard Code for Information Interchange que numa tradução livre, seria, "Código Padrão Americano para o Intercâmbio de Informação".

Podemos obter o código ASCII de um caractere ou então, através de um caractere, obter o seu respectivo código. Geralmente, trabalhamos com os códigos ASCII quando estamos definindo funcionalidades para determinadas teclas, como por exemplo, na construção de um jogo.

A tabela ASCII é a convenção que define o valor decimal e binário de cada caractere. Nesse momento, não aprofundaremos o estudo sobre a tabela ASCII ou então, o padrão UNICODE. Porém, estudaremos detalhadamente numa próxima situação. Agora, o que nós temos que saber, é que cada letra do nosso teclado está associado a um valor numérico.

Veja neste link uma explicação da relação do Python com o sistema UNICODE .

Por exemplo, a letra A maiúscula recebe o código 65, a letra B o código 66 e assim por diante. A letra a minúscula, recebe o código 97, e a letra b minúscula o código 98 e assim por diante.

Esses valores serão utilizados, por exemplo, quando comparamos 2 String distintas. Por exemplo, se digitar a seguinte expressão, qual o valor lógico retornado?

Temos que o valor lógico retornado será True, até porque, o código ASCII do caractere a minúsculo (65) é maior do que o caractere X maiúsculo.

O Python disponibiliza 2 funções que são bastante uteis quando estamos trabalhando com o sistema ASCII. A primeira é a função ord() , que recebe uma letra como parâmetro e retorna o código ASCII da mesma. A segunda função, é a chr() , onde passamos o código ASCII e nos é retornado a respectiva letra.

A seguir, temos 2 exemplos utilizando as funções builtin do Python ord() e chr().

>>> ord('a') 97 >>> chr(97) 'a'

No exemplo acima, inicialmente, confirmamos que o código ASCII da letra a minúscula é 97. Em seguida, passamos o código 97 como argumento da função chr() e, como resposta, tivemos o caractere a.

A seguir, temos um exemplo em que é impresso, na saída padrão, o código ASCII e a respectiva letra dos 122 primeiros caracteres.

>>> for c in range(123): str(c) + " - " + chr(c) '0 - \x00' '1 - \x01' '2 - \x02' '3 - \x03' '4 - \x04' '5 - \x05' '6 - \x06' '7 - \x07' '8 - \x08' '9 - \t' '10 - \n' '11 - \x0b' '12 - \x0c' '13 - \r' '14 - \x0e' '15 - \x0f' '16 - \x10' '17 - \x11' '18 - \x12' '19 - \x13' '20 - \x14' '21 - \x15' '22 - \x16' '23 - \x17' '24 - \x18' '25 - \x19' '26 - \x1a' '27 - \x1b' '28 - \x1c' '29 - \x1d' '30 - \x1e' '31 - \x1f' '32 - ' '33 - !' '34 - "' '35 - #' '36 - $' '37 - %' '38 - &' "39 - '" '40 - (' '41 - )' '42 - *' '43 - +' '44 - ,' '45 - -' '46 - .' '47 - /' '48 - 0' '49 - 1' '50 - 2' '51 - 3' '52 - 4' '53 - 5' '54 - 6' '55 - 7' '56 - 8' '57 - 9' '58 - :' '59 - ;' '60 - <' '61 - =' '62 - >' '63 - ?' '64 - @' '65 - A' '66 - B' '67 - C' '68 - D' '69 - E' '70 - F' '71 - G' '72 - H' '73 - I' '74 - J' '75 - K' '76 - L' '77 - M' '78 - N' '79 - O' '80 - P' '81 - Q' '82 - R' '83 - S' '84 - T' '85 - U' '86 - V' '87 - W' '88 - X' '89 - Y' '90 - Z' '91 - [' '92 - \\' '93 - ]' '94 - ^' '95 - _' '96 - `' '97 - a' '98 - b' '99 - c' '100 - d' '101 - e' '102 - f' '103 - g' '104 - h' '105 - i' '106 - j' '107 - k' '108 - l' '109 - m' '110 - n' '111 - o' '112 - p' '113 - q' '114 - r' '115 - s' '116 - t' '117 - u' '118 - v' '119 - w' '120 - x' '121 - y' '122 - z'

Os caracteres de escape é uma definição para adicionar as strings, marcações que não possuem um desenho (representação visual) propriamente dito. Ainda que estes caracteres não tenham uma simbologia que os justifiquem, os mesmos possuem representações na forma em que nossos textos serão exibidos ou impressos. Assim, temos que os Caracteres de Escape desempenham tarefas bastante importantes na formatação e exibição dos textos. Tomemos por exemplo, uma quebra de linha, ou seja, o pressionamento da tecla Enter.

A quebra de linha não possui um caractere que a represente visualmente, até porque, a sua representação visual, é o posicionamento do cursor no canto esquerto da linha seguinte. O mesmo acontece com a tabulação, onde não há um desenho que a represente, até porque, o objetivo, é o posicionamento do texto mais a direita do vídeo.

É interessante notar, que os Caracteres de Escape, fazem um trabalho semelhante, ao encontrado em linguagem de marcação moderna, como por exemplo, o HTML, que utiliza para a representação de quebra de linha, a Tag <br>.

A notação utilizada e o que define os Caracteres de Escape, é a barra invertida. Todo Caractere de Escape é formado por uma barra invertida e outro caractere que definirá a ação.

O primeiro caractere, no caso, a barra, define que estamos utilizando a notação de Caracteres de Escape, enquanto que o segundo caractere, representa a ação a ser realizada.

  • /n - quebra de linha
  • /t - tabulação

Alguns Caracteres de Escape, talvez, não funcionem no editor que estejas utilizando, e também, não tente utilizar os Caracteres de Escape dentro de editores de texto puro, como por exemplo, o Bloco de Notas do Windows, até porque, ao invés de obteres um o resultado aqui descrito, terás somente, os digitos em sua representação textual.

Os Caracteres de Escape, como por exemplo, o Carriage Return, cuja notação é \r, normalmente, não funciona na plataforma Windows e nem nos Prompts de Comando modernos. O mesmo foi amplamente utilizado, na época das impressoras matriciais, até porque, praticamente todo o controle era feito com uso de Caracteres de Escape, e o funcionamento da manipulação das impressoras, ocorria de forma semelhante a maneira como manipulamos o prompt atutalmente. A diferença, é que ao invés de enviarmos o texto para o o Prompt, enviávamos para um arquivo virtual, que era na verdade, a saída padrão da impressora.

A seguir, temos as principais Escape Sequence da linguagem C. Os dois primeiro itens, que nos caso, são a quebra de linha n e a tabulação t são os mais utilizados. Porém, é importante observar que muitas vezes precisaremos, por exemplo, imprimir a barra invertida, e então, precisaremos "escapar" a mesma, isto é, precisaremos utilizar um caractere especial para inserir num texto que a barra deve ser utilizada visualmente, e não como um Caractere de Escape.

n - Nova página (line feed) t - Tabulação (tab)

' - Aspa simples " - Aspa dupla

0 - Caractere null (fim de uma String)

? - Interrogação \ - backslash a - Emissão de som b - backspace f - Nova página (form feed) r - Retorno do cursor (carriage return) v - Tabulação Vertical

É comum, por exemplo, precisarmos imprimir um texto e em seguida, posicionar o cursor na linha seguinte. Para isso, basta adicionarmos ao término da string um \n, que no caso, é a notação que representa uma quebra de linha.

Vamos supor que queiramos imprimir um texto onde uma parte estará numa linha e a outra parte, na linha seguinte. No código a seguir, estamos supondo a situação utilizando um código que possui erro.

#include <stdio.h> int main() { printf("Fala, galera."); }

O código acima, simplesmente quebrou a expressão, o que não é permitido pela Linguagem C.

A solução para o código do exemplo anterior, é a utilização de um Caractere de Escape NewLine representado pela notação \n. Assim, corrigindo o exemplo anterior, teríamos um código em que a primeira parte seria impresso numa linha, enquanto a segunda, na linha seguinte.

#include <stdio.h> int main() { printf("Fala, \ngalera."); }

Observe no código acima, que o Caractere de Escape n está junto a palavra galera, porém o mesmo, será interpretado pela compilador e então, uma quebra de linha será adicionada.

Tags curso, python, caractere, ascii, unicode, escape sequence