A classe str oferece muitos métodos úteis para trabalhar com strings e compô-las.
Entre eles estão buscar, limpar, dividir, transformar, traduzir e muitas outras técnicas.
Strings são sequências de pontos de código Unicode: "caracteres" individuais, ou pontos de código (strings de comprimento 1), podem ser referenciados por um número de 0-based index a partir da esquerda, ou de -1-based index a partir da direita.
Strings implementam todas as operações comuns de sequência.
Elas podem ser percorridas com a sintaxe for item in <str> ou for index, item in enumerate(<str>).
Também podem ser concatenadas com <str> + <other str> ou <str>.join(<iterable>).
Strings são imutáveis: o valor de um objeto str na memória não pode mudar.
Funções ou métodos que operam sobre uma str (como os que estamos aprendendo aqui) retornam uma nova instance desse objeto str, em vez de modificar a str original.
A seguir, uma pequena seleção de métodos de string do Python. Para uma lista completa, consulte a classe str na documentação do Python.
<str>.title() analisa uma string e coloca em maiúscula o primeiro "caractere" de cada "palavra" encontrada.
No Python, isso depende muito do codec de idioma usado e de como o idioma em questão representa palavras e caracteres.
Também pode haver regras de locale para um idioma ou conjunto de caracteres.
man_in_hat_th = 'ผู้ชายใส่หมวก'
man_in_hat_ru = 'мужчина в шляпе'
man_in_hat_ko = '모자를 쓴 남자'
man_in_hat_en = 'the man in the hat.'
>>> man_in_hat_th.title()
'ผู้ชายใส่หมวก'
>>> man_in_hat_ru.title()
'Мужчина В Шляпе'
>>> man_in_hat_ko.title()
'모자를 쓴 남자'
>> man_in_hat_en.title()
'The Man In The Hat.'
<str>.endswith(<suffix>) retorna True se a string termina com <suffix>, e False caso contrário.
>>> 'My heart breaks. 💔'.endswith('💔')
True
>>> 'cheerfulness'.endswith('ness')
True
# Punctuation is part of the string, so needs to be included in any endswith match.
>>> 'Do you want to 💃?'.endswith('💃')
False
>> 'The quick brown fox jumped over the lazy dog.'.endswith('dog')
False
<str>.strip(<chars>) retorna uma cópia da str com os <chars> iniciais e finais removidos.
Os pontos de código especificados em <chars> não são um prefixo nem um sufixo: todas as combinações dos pontos de código serão removidas a partir das duas extremidades da string.
Se nada for especificado para <chars>, todas as combinações de pontos de código de espaço em branco serão removidas.
# This will remove "https://", because it can be formed from "/stph:".
>>> 'https://unicode.org/emoji/'.strip('/stph:')
'unicode.org/emoji'
# Removal of all whitespace from both ends of the str.
>>> ' 🐪🐪🐪🌟🐪🐪🐪 '.strip()
'🐪🐪🐪🌟🐪🐪🐪'
>>> justification = 'оправдание'
>>> justification.strip('еина')
'оправд'
# Prefix and suffix in one step.
>>> 'unaddressed'.strip('dnue')
'address'
>>> ' unaddressed '.strip('dnue ')
'address'
<str>.replace(<substring>, <replacement substring>) retorna uma cópia da string com todas as ocorrências de <substring> substituídas por <replacement substring>.
A citação usada abaixo é de The Hunting of the Snark, de Lewis Carroll.
# The Hunting of the Snark, by Lewis Carroll
>>> quote = '''
"Just the place for a Snark!" the Bellman cried,
As he landed his crew with care;
Supporting each man on the top of the tide
By a finger entwined in his hair.
"Just the place for a Snark! I have said it twice:
That alone should encourage the crew.
Just the place for a Snark! I have said it thrice:
What I tell you three times is true."
'''
>>> quote.replace('Snark', '🐲')
...
'\n"Just the place for a 🐲!" the Bellman cried,\n As he landed his crew with care;\nSupporting each man on the top of the tide\n By a finger entwined in his hair.\n\n"Just the place for a 🐲! I have said it twice:\n That alone should encourage the crew.\nJust the place for a 🐲! I have said it thrice:\n What I tell you three times is true."\n'
>>> 'bookkeeper'.replace('kk', 'k k')
'book keeper'
Neste exercício, você está ajudando sua irmã mais nova a revisar a redação dela para a escola. O professor está buscando pontuação e gramática corretas e uma excelente escolha de palavras.
Você tem quatro tarefas para limpar e modificar strings.
Toda boa redação precisa de um título bem formatado.
Implemente a função capitalize_title(<title>), que recebe um título str como parâmetro e coloca a primeira letra de cada palavra em maiúscula.
Essa função deve retornar uma str em formato de título.
>>> capitalize_title("my hobbies")
"My Hobbies"
Você quer garantir que a pontuação da redação esteja perfeita.
Implemente a função check_sentence_ending(), que recebe sentence como parâmetro. Essa função deve retornar um bool.
>>> check_sentence_ending("I like to hike, bake, and read.")
True
Para deixar a redação com aparência profissional, é preciso remover os espaços desnecessários.
Implemente a função clean_up_spacing(), que recebe sentence como parâmetro.
A função deve remover os espaços em branco extras no início e no fim da frase, retornando uma nova str com a frase atualizada.
>>> clean_up_spacing(" I like to go on hikes with my dog. ")
"I like to go on hikes with my dog."
Para deixar a redação ainda melhor, você pode substituir alguns dos adjetivos por sinônimos.
Escreva a função replace_word_choice(), que recebe sentence, old_word e new_word como parâmetros.
Essa função deve substituir todas as ocorrências de old_word por new_word e retornar uma nova str com a frase atualizada.
>>> replace_word_choice("I bake good cakes.", "good", "amazing")
"I bake amazing cakes."
Crie sua conta no Exercism para aprender e dominar Python com 17 conceitos146 exercícios e mentoria humana de verdade, tudo de graça.