Métodos dos objetos string
Strings são um tipo de dado armazenado na memória do computador, e mais que isso, em Python, são acompanhados de uma série de funções que podem ser acionadas com a sintaxe do ponto (dot syntax).
Na programação orientada a objetos vemos que funções atreladas a objetos de uma classe são conhecidas como métodos.
Convertendo caixa alta e baixa (maiúsculas e minúsculas)
# str.lower() devolve string com a versão em caixa baixa
print('Alexandre'.lower()) # exibe: alexandre
# str.upper() devolve string com a versão em caixa alta
print('Alexandre'.upper()) # exibe: ALEXANDRE
Checando prefixos e sufixos
# str.startswith(prefixo) informa se o texto inicia com um certo prefixo
nome_arquivo = "imagem1212.jpg"
print(nome_arquivo.startswith("image")) # exibe: True
print(nome_arquivo.startswith("a")) # exibe: False
# str.endswith(sufixo) informa se o texto termina com um certo sufixo
nome_arquivo = "imagem3434.jpg"
print(nome_arquivo.endswith(".jpg")) # exibe: True
print(nome_arquivo.endswith(".gif")) # exibe: False
É possível ‘encadear’ métodos, como no exemplo abaixo.
# identifica arquivos que terminam tanto com .png como com .PNG
if nome_arquivo.lower().endswith('.png'):
print("Arquivo tipo PNG")
Procurando sub-strings
Trecho da documentação:
str.find(sub[, start[, end]])
Retorna o índice mais baixo na String onde a substring sub é encontrado dentro da fatia s[start:end]. Argumntos opcionais como start e end são interpretados como umanotação de fatiamento. Retorna -1 se sub não for localizado. Nota: O método find() deve ser usado apenas se precisarmos conhecer a posição de sub. Para verificar se sub é ou não uma substring, use o operadorin
.
str.count(sub[, start[, end]])
Retorna o número de ocorrências da sub-string sub que não se sobrepõem no intervalo [start, end]. Argumentos opcionais start e end são interpretados como na notação de fatias.
Dividindo e juntando strings
# str.split(delimitador_opcional) devolve uma lista cujos itens são trechos do texto "divididos"
# Confira também str.splitlines() que divide em quebras de linha!
nome = 'Santos-Dumont'
lista = nome.split('-') # .split(delimitador) devolve uma lista
print(lista) # com os trechos de texto entre os delimitadores:
# ['Santos', 'Dumont']
print("a/b/c".split("/"))
# exibe: ['a', 'b', 'c']
itens = "A a B b".split() # usado sem argumentos divide nos espaços
print(itens)
# exibe: ['A', 'a', 'B', 'b']
# str.join(coisas) use um string/caractere como delimitador para juntar uma coleção de textos!
coisas = ('a', 'b', 'c')
print('-'.join(coisas))
# exibe: a-b-c
print('\n'.joint('xyz') # \n indica uma quebra de linha
# exibe em 3 linhas:
# x
# y
# z
Substituições com .replace()
e inserções com .format()
# str.replace(velho, novo) # substitui todas as ocorrências de um texto dentro de outro, se houver
frase = u'as pessoas são estranhas'.replace('as', 'a')
frase = frase.replace(u'são', u'é')
print(frase) # exibe: a pessoa é estranha
# str.format(valor, outro) substitui valores em pontos especiais do texto marcados com chaves: {}
nome, idade = 'Alexandre', 120 # repare que o nome é <str> e a idade <int>, a idade será convertida em <str>.
print(u"Olá, {}, você tem mesmo {} anos?".format(nome, idade))
# exibe: Olá, Alexandre, você tem mesmo 120 anos?
Convertendo números em texto
É possível controlar a formatação da conversão de números em string, como o número de casas decimais ou com zeros à esquerda para garantir um certo número de dígitos, usando o método .format()
e um string com uma notação especial entre as chaves {}
:
print("ângulo calculado: {:.2f}".format(ang)) # Exibe valor com duas casas decimais
nome_arquivo = "arq{:0>5}.svg".format(123) # Produz um string para nome_arquivo: "arq00123.svg"
Veja mais alguns exemplos.
print(u"π: {:+n}".format(PI)) # com sinal, exibe π: +3.14159
print("{:.20f}".format(PI)) # com vinte posições decimais, exibe 3.14159274101257324219
print("{:.4f}".format(PI)) # com quatro posições decimais, exibe 3.1416
print("{:07.4f}".format(PI)) # preenche com zeros até 8 caracteres, exibe 003.1416
print("{:.4%}".format(PI)) # interpreta o número como uma porcentagem e exibe 314.1593%
E tem mais coisas ainda!
Voocê pode ler mais na Documentação do Python sobre os métodos de String e a mini-linguagem de formatação.