Dominando Strings em Python: Criação, Acesso e Manipulação
Strings estão entre os tipos mais populares em Python. Podemos criá-las simplesmente colocando caracteres entre aspas. O Python trata aspas simples da mesma forma que aspas duplas. Criar strings é tão simples quanto atribuir um valor a uma variável. Por exemplo:
var1 = 'Hello World!' var2 = "Python Programming"
Acedendo a Valores em Strings
O Python não suporta um tipo caractere; estes são tratados como strings de comprimento um, assim também considerados uma substring.
Para aceder a substrings, use colchetes para fatiar junto com o índice ou índices para obter a sua substring. Por exemplo:
Live Demo#!/usr/bin/python var1 = 'Hello World!' var2 = "Python Programming" print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]
Quando o código acima é executado, produz o seguinte resultado:
var1[0]: H var2[1:5]: ytho
Atualizando Strings
Pode "atualizar" uma string existente (re)atribuindo uma variável a outra string. O novo valor pode estar relacionado com o seu valor anterior ou a uma string completamente diferente. Por exemplo:
Live Demo#!/usr/bin/python var1 = 'Hello World!' print "Updated String :- ", var1[:6] + 'Python'
Quando o código acima é executado, produz o seguinte resultado:
Updated String :- Hello Python
Caracteres de Escape
A tabela seguinte é uma lista de caracteres de escape ou não imprimíveis que podem ser representados com notação de barra invertida.
Um caractere de escape é interpretado; numa string com aspas simples assim como aspas duplas.
| Notação de barra invertida | Caractere hexadecimal | Descrição |
|---|---|---|
| \a | 0x07 | Bell ou alerta |
| \b | 0x08 | Backspace |
| \cx | Control-x | |
| \C-x | Control-x | |
| \e | 0x1b | Escape |
| \f | 0x0c | Formfeed |
| \M-\C-x | Meta-Control-x | |
| \n | 0x0a | Nova linha |
| \nnn | Notação octal, onde n está no intervalo 0.7 | |
| \r | 0x0d | Retorno de carro |
| \s | 0x20 | Espaço |
| \t | 0x09 | Tab |
| \v | 0x0b | Tab vertical |
| \x | Caractere x | |
| \xnn | Notação hexadecimal, onde n está no intervalo 0.9, a.f, ou A.F |
Operadores Especiais de String
Assuma que a variável string a contém 'Hello' e a variável b contém 'Python', então:
| Operador | Descrição | Exemplo |
|---|---|---|
| + | Concatenação - Adiciona valores em ambos os lados do operador | a + b dará HelloPython |
| * | Repetição - Cria novas strings, concatenando múltiplas cópias da mesma string | a*2 dará -HelloHello |
| [] | Fatia - Dá o caractere do índice dado | a[1] dará e |
| [ : ] | Fatia de Intervalo - Dá os caracteres do intervalo dado | a[1:4] dará ell |
| in | Pertinência - Retorna verdadeiro se um caractere existe na string dada | H in a dará 1 |
| not in | Pertinência - Retorna verdadeiro se um caractere não existe na string dada | M not in a dará 1 |
| r/R | String Raw - Suprime o significado real dos caracteres de escape. A sintaxe para strings raw é exatamente a mesma que para strings normais com a exceção do operador de string raw, a letra "r," que precede as aspas. O "r" pode ser minúsculo (r) ou maiúsculo (R) e deve ser colocado imediatamente antes da primeira aspa. | print r'\n' imprime \n e print R'\n'imprime \n |
| % | Formatação - Realiza formatação de string | Ver na próxima secção |
Operador de Formatação de String
Uma das funcionalidades mais fixes do Python é o operador de formatação de string %. Este operador é único para strings e compensa a falta de funções da família printf() do C. Segue um exemplo simples:
Live Demo #!/usr/bin/python print "My name is %s and weight is %d kg!" % ('Zara', 21)
Quando o código acima é executado, produz o seguinte resultado:
My name is Zara and weight is 21 kg!
Aqui está a lista do conjunto completo de símbolos que podem ser usados junto com %:
| Símbolo de Formato | Conversão |
|---|---|
| %c | caractere |
| %s | conversão string via str() antes de formatar |
| %i | inteiro decimal com sinal |
| %d | inteiro decimal com sinal |
| %u | inteiro decimal sem sinal |
| %o | inteiro octal |
| %x | inteiro hexadecimal (letras minúsculas) |
| %X | inteiro hexadecimal (letras MAIÚSCULAS) |
| %e | notação exponencial (com 'e' minúsculo) |
| %E | notação exponencial (com 'E' MAIÚSCULO) |
| %f | número real de ponto flutuante |
| %g | o mais curto de %f e %e |
| %G | o mais curto de %f e %E |
Outros símbolos suportados e funcionalidades estão listados na tabela seguinte:
| Símbolo | Funcionalidade |
|---|---|
| * | argumento especifica largura ou precisão |
| - | justificação à esquerda |
| + | exibir o sinal |
| <sp> | deixar um espaço em branco antes de número positivo |
| # | adicionar zero inicial octal ( '0' ) ou '0x' ou '0X' hexadecimal inicial, dependendo se 'x' ou 'X' foram usados. |
| 0 | preencher à esquerda com zeros (em vez de espaços) |
| % | '%%' deixa você com um único '%' literal |
| (var) | variável de mapeamento (argumentos de dicionário) |
| m.n. | m é a largura total mínima e n é o número de dígitos a exibir após o ponto decimal (se aplicável) |
Aspas Triplas
As aspas triplas do Python vêm em socorro ao permitir que strings abranjam múltiplas linhas, incluindo NEWLINEs, TABs verbatim e quaisquer outros caracteres especiais.
A sintaxe para aspas triplas consiste em três aspas simples ou duplas consecutivas.
Live Demo#!/usr/bin/python para_str = """this is a long string that is made up of several lines and non-printable characters such as TAB ( \t ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ \n ], or just a NEWLINE within the variable assignment will also show up. """ print para_str
Quando o código acima é executado, produz o seguinte resultado. Note como cada caractere especial foi convertido para a sua forma impressa, até ao último NEWLINE no final da string entre "up." e as aspas triplas de fecho. Note também que NEWLINEs ocorrem quer com um retorno de carro explícito no fim de uma linha ou o seu código de escape (\n):
this is a long string that is made up of several lines and non-printable characters such as TAB ( ) and they will show up that way when displayed. NEWLINEs within the string, whether explicitly given like this within the brackets [ ], or just a NEWLINE within the variable assignment will also show up.
Strings raw não tratam a barra invertida como caractere especial. Todo o caractere que colocar numa string raw fica como o escreveu:
Live Demo#!/usr/bin/python print 'C:\\nowhere'
Quando o código acima é executado, produz o seguinte resultado:
C:\nowhere
Agora vamos usar string raw. Colocaríamos a expressão em r'expression' da seguinte forma:
Live Demo#!/usr/bin/python print r'C:\\nowhere'
Quando o código acima é executado, produz o seguinte resultado:
C:\\nowhere
String Unicode
Strings normais em Python são armazenadas internamente como ASCII de 8-bit, enquanto strings Unicode são armazenadas como Unicode de 16-bit. Isso permite um conjunto de caracteres mais variado, incluindo caracteres especiais da maioria das línguas do mundo. Restringirei o meu tratamento de strings Unicode ao seguinte:
Live Demo#!/usr/bin/python print u'Hello, world!'
Quando o código acima é executado, produz o seguinte resultado:
Hello, world!
Como pode ver, strings Unicode usam o prefixo u, tal como strings raw usam o prefixo r.
Métodos Built-in de String
O Python inclui os seguintes métodos built-in para manipular strings:
| Sr.No. | Métodos com Descrição |
|---|---|
| 1 | capitalize() Capitaliza a primeira letra da string |
| 2 | center(width, fillchar) Retorna uma string preenchida com espaços com a string original centrada num total de colunas width. |
| 3 | count(str, beg= 0,end=len(string)) Conta quantas vezes str ocorre na string ou numa substring se índice inicial beg e índice final end forem dados. |
| 4 | decode(encoding='UTF-8',errors='strict') Decodifica a string usando o codec registado para encoding. encoding defaults to the default string encoding. |
| 5 | encode(encoding='UTF-8',errors='strict') Retorna versão codificada da string; em erro, default é levantar ValueError a menos que errors seja dado com 'ignore' ou 'replace'. |
| 6 | endswith(suffix, beg=0, end=len(string)) Determina se string ou substring (se índice inicial beg e índice final end forem dados) termina com sufixo; retorna verdadeiro se sim e falso caso contrário. |
| 7 | expandtabs(tabsize=8) Expande tabs na string para múltiplos espaços; default 8 espaços por tab se tabsize não fornecido. |
| 8 | find(str, beg=0 end=len(string)) Determina se str ocorre na string ou substring se índice inicial beg e índice final end forem dados retorna índice se encontrado e -1 caso contrário. |
| 9 | index(str, beg=0, end=len(string)) Igual a find(), mas levanta exceção se str não encontrado. |
| 10 | isalnum() Retorna verdadeiro se string tem pelo menos 1 caractere e todos caracteres são alfanuméricos e falso caso contrário. |
| 11 | isalpha() Retorna verdadeiro se string tem pelo menos 1 caractere e todos caracteres são alfabéticos e falso caso contrário. |
| 12 | isdigit() Retorna verdadeiro se string contém apenas dígitos e falso caso contrário. |
| 13 | islower() Retorna verdadeiro se string tem pelo menos 1 caractere com caso e todos caracteres com caso estão em minúsculas e falso caso contrário. |
| 14 | isnumeric() Retorna verdadeiro se string unicode contém apenas caracteres numéricos e falso caso contrário. |
| 15 | isspace() Retorna verdadeiro se string contém apenas caracteres de espaço em branco e falso caso contrário. |
| 16 | istitle() Retorna verdadeiro se string é propriamente "titlecased" e falso caso contrário. |
| 17 | isupper() Retorna verdadeiro se string tem pelo menos um caractere com caso e todos caracteres com caso estão em maiúsculas e falso caso contrário. |
| 18 | join(seq) Funde (concatena) as representações string de elementos na sequência seq numa string, com string separadora. |
| 19 | len(string) Retorna o comprimento da string |
| 20 | ljust(width[, fillchar]) Retorna string preenchida com espaços com a string original justificada à esquerda num total de colunas width. |
| 21 | lower() Converte todas as letras maiúsculas na string para minúsculas. |
| 22 | lstrip() Remove todos os espaços em branco iniciais na string. |
| 23 | maketrans() Retorna uma tabela de tradução para ser usada na função translate. |
| 24 | max(str) Retorna o caractere alfabético máximo da string str. |
| 25 | min(str) Retorna o caractere alfabético mínimo da string str. |
| 26 | replace(old, new [, max]) Substitui todas as ocorrências de old na string com new ou no máximo max ocorrências se max dado. |
| 27 | rfind(str, beg=0,end=len(string)) Igual a find(), mas pesquisa para trás na string. |
| 28 | rindex( str, beg=0, end=len(string)) Igual a index(), mas pesquisa para trás na string. |
| 29 | rjust(width,[, fillchar]) Retorna string preenchida com espaços com a string original justificada à direita num total de colunas width. |
| 30 | rstrip() Remove todos os espaços em branco finais da string. |
| 31 | split(str="", num=string.count(str)) Divide string de acordo com delimitador str (espaço se não fornecido) e retorna lista de substrings; divide em no máximo num substrings se dado. |
| 32 | splitlines( num=string.count('\n')) Divide string em todos (ou num) NEWLINEs e retorna lista de cada linha com NEWLINEs removidos. |
| 33 | startswith(str, beg=0,end=len(string)) Determina se string ou substring (se índice inicial beg e índice final end forem dados) começa com substring str; retorna verdadeiro se sim e falso caso contrário. |
| 34 | strip([chars]) Realiza tanto lstrip() como rstrip() na string. |
| 35 | swapcase() Inverte caso para todas as letras na string. |
| 36 | title() Retorna versão "titlecased" da string, ou seja, todas as palavras começam com maiúscula e o resto minúsculas. |
| 37 | translate(table, deletechars="") Traduz string de acordo com tabela de tradução str(256 chars), removendo aqueles na string del. |
| 38 | upper() Converte letras minúsculas na string para maiúsculas. |
| 39 | zfill (width) Retorna string original preenchida à esquerda com zeros num total de width caracteres; destinado a números, zfill() retém qualquer sinal dado (menos um zero). |
| 40 | isdecimal() Retorna verdadeiro se string unicode contém apenas caracteres decimais e falso caso contrário. |
python
- Dominando Strings em C#: Fundamentos, Operações e Técnicas Avançadas
- Dominando Operadores em Python: Guia Completo
- Dominando Dicionários em Python: Criação, Manipulação e Técnicas Avançadas
- Domine Operações com Strings em Python: Replace, Join, Split, Reverse e Conversão de Case
- Dominando o Método strip() do Python: Guia Completo e Exemplos Práticos
- Domine o str.count() do Python: Como Contar Caracteres e Substrings com Exemplos
- Domine Strings format() em Python com Exemplos Claros
- Python len(): Guia Prático para Medir Comprimento de Objetos
- Domine o Método String.find() do Python: Sintaxe, Exemplos e Alternativas
- Dominando enumerate() do Python: Loop com Índices para Listas, Tuplas, Strings e Dicionários