Comecei a manter uma lista das funções mais usadas, resolvendo problemas algorítmicos no LeetCode e no HackerRank.Ser um bom programador não significa lembrar de todas as funções internas de uma determinada linguagem. Mas isso não significa que a memorização deles seja inútil. Especialmente - quando se trata de se preparar para uma entrevista.Hoje eu quero compartilhar com todos que querem minha cábula para trabalhar com strings em Python. Eu o projetei como uma lista de perguntas, que uso para autoteste. Embora essas perguntas não sejam atraídas para as tarefas completas oferecidas nas entrevistas, o desenvolvimento delas o ajudará a resolver problemas reais de programação.
1. Como verificar a identidade de dois objetos?
O operador is
retornará True
se uma referência à mesma área de memória for escrita em duas variáveis. É disso que estamos falando quando falamos sobre a "identidade dos objetos".Não confunda is
e ==
. O operador ==
verifica apenas a igualdade de objetos.animals = ['python','gopher']
more_animals = animals
print(animals == more_animals)
print(animals is more_animals)
even_more_animals = ['python','gopher']
print(animals == even_more_animals)
print(animals is even_more_animals)
Preste atenção ao fato de que animals
eles even_more_animals
não são idênticos, embora sejam iguais um ao outro.Além disso, há uma função id()
que retorna o identificador do endereço de memória associado ao nome da variável. Quando essa função é chamada, o mesmo identificador será retornado para dois objetos idênticos.name = 'object'
id(name)
2. Como verificar se todas as palavras de uma linha começam com uma letra maiúscula?
Existe um método de string istitle()
que verifica se cada palavra em uma string começa com uma letra maiúscula.print( 'The Hilton'.istitle() )
print( 'The dog'.istitle() )
print( 'sticky rice'.istitle() )
3. Como verificar uma string em busca de outra string?
Existe uma instrução in
que retornará True
se a sequência contiver a sequência de pesquisa.print( 'plane' in 'The worlds fastest plane' )
print( 'car' in 'The worlds fastest plane' )
4. Como encontrar o índice da primeira ocorrência de uma substring em uma string?
Existem dois métodos que retornam o índice da primeira ocorrência de uma substring em uma string. Isto é find()
e index()
. Cada um deles tem certos recursos.O método find()
retornará -1
se a substring necessária na string não for encontrada.'The worlds fastest plane'.find('plane')
'The worlds fastest plane'.find('car')
Um método index()
em tal situação gera um erro ValueError
.'The worlds fastest plane'.index('plane')
'The worlds fastest plane'.index('car')
5. Como contar o número de caracteres em uma string?
A função len()
retorna o comprimento da string.len('The first president of the organization..')
6. Como contar quantas vezes um determinado caractere ocorre em uma string?
O método count()
que retorna o número de ocorrências na sequência do caractere especificado nos ajudará a responder a esta pergunta .'The first president of the organization..'.count('o')
7. Como tornar o primeiro caractere de uma string uma letra maiúscula?
A fim de fazer isso, você pode usar o método capitalize()
.'florida dolphins'.capitalize()
8. O que são linhas f e como usá-los?
O Python 3.6 apresenta um novo recurso, as chamadas "strings-f". Seu uso simplifica bastante a interpolação de strings. O uso de linhas f se assemelha à aplicação de um método format()
.Quando as linhas f são declaradas, uma carta é escrita antes das aspas de abertura f
.name = 'Chris'
food = 'creme brulee'
f'Hello. My name is {name} and I like {food}.'
9. Como encontrar uma substring em uma determinada parte de uma string?
O método index()
pode ser chamado passando argumentos opcionais para ele, representando o índice do fragmento inicial e final da sequência, dentro do qual você precisa procurar uma substring.'the happiest person in the whole wide world.'.index('the',10,44)
Preste atenção ao fato de que a construção acima retorna 23
e 0
, por assim dizer, não limitaria nossa pesquisa.'the happiest person in the whole wide world.'.index('the')
10. Como inserir o conteúdo de uma variável em uma string usando o método format ()?
O método format()
permite alcançar resultados semelhantes aos que podem ser obtidos usando as linhas f. É verdade que acredito que não é format()
tão conveniente usar, pois todas as variáveis precisam ser especificadas como argumentos format()
.difficulty = 'easy'
thing = 'exam'
'That {} was {}!'.format(thing, difficulty)
11. Como sei se uma string contém apenas números?
Existe um método isnumeric()
que retorna True
se todos os caracteres na sequência forem números.'80000'.isnumeric()
Usando esse método, lembre-se de que ele não conta os sinais de pontuação como números.'1.0'.isnumeric()
12. Como dividir uma string por um determinado caractere?
Aqui seremos ajudados por um método split()
que quebra uma string por um determinado caractere ou por vários caracteres.'This is great'.split(' ')
'not--so--great'.split('--')
13. Como verificar se uma string é composta apenas por letras minúsculas?
O método islower()
retornará True
apenas se a sequência for composta apenas por letras minúsculas.'all lower case'.islower()
'not aLL lowercase'.islower()
14. Como verificar se uma string começa com uma letra minúscula?
Isso pode ser feito chamando o método acima islower()
para o primeiro caractere da string.'aPPLE'[0].islower()
15. É possível em Python adicionar um número inteiro a uma string?
Isso é possível em algumas linguagens, mas o Python gera um erro ao tentar executar uma operação semelhante TypeError
.'Ten' + 10
16. Como "inverter" uma linha?
Para "inverter" uma linha, ela pode ser dividida apresentando-a como uma lista de caracteres, "inverter" a lista e, combinando seus elementos, formar uma nova linha.''.join(reversed("hello world"))
17. Como combinar a lista de linhas em uma linha, cujos elementos são separados por hífens?
O método join()
pode combinar itens de lista em cadeias, separando cadeias individuais usando o caractere especificado.'-'.join(['a','b','c'])
18. Como sei que todos os caracteres de uma string estão em ASCII?
O método isascii()
retornará True
se todos os caracteres da sequência estiverem em ASCII.print( 'Â'.isascii() )
print( 'A'.isascii() )
19. Como converter a corda inteira para maiúsculas ou minúsculas?
Para resolver esses problemas, você pode usar os métodos upper()
e lower()
, respectivamente, levar todos os caracteres das seqüências de caracteres para maiúsculas e minúsculas.sentence = 'The Cat in the Hat'
sentence.upper()
sentence.lower()
20. Como converter o primeiro e o último caracteres de uma string em maiúsculas?
Aqui, como em um dos exemplos anteriores, vamos nos referir aos caracteres da string pelo índice. As linhas em Python são imutáveis, portanto, criaremos novas linhas com base nas existentes.animal = 'fish'
animal[0].upper() + animal[1:-1] + animal[-1].upper()
21. Como verificar se uma string é composta apenas por letras maiúsculas?
Existe um método isupper()
semelhante ao já considerado islower()
. Mas isupper()
retorna True
apenas se a cadeia inteira consistir em letras maiúsculas.'Toronto'.isupper()
'TORONTO'.isupper()
22. Em que situação você usaria o método splitlines ()?
O método splitlines()
separa seqüências de caracteres por caracteres de quebra de linha.sentence = "It was a stormy night\nThe house creeked\nThe wind blew."
sentence.splitlines()
23. Como obter uma fatia de linha?
Para obter uma fatia de uma sequência, a seguinte sintaxe é usada:string[start_index:end_index:step]
Aqui step
está a etapa com a qual os caracteres de sequência de um intervalo serão retornados start_index:end_index
. Um step
valor 3 indica que cada terceiro caractere será retornado.string = 'I like to eat apples'
string[:6]
string[7:13]
string[0:-1:2]
24. Como converter um número inteiro em uma string?
Você pode usar o construtor para converter um número em uma string str()
.str(5)
25. Como sei que uma string contém apenas caracteres alfabéticos?
O método isalpha()
retornará True
se todos os caracteres da string forem letras.'One1'.isalpha()
'One'.isalpha()
26. Como substituir todas as ocorrências de uma certa substring em uma determinada linha?
Se você não exportar um módulo que permita trabalhar com expressões regulares, poderá usar o método para resolver esse problema replace()
.sentence = 'Sally sells sea shells by the sea shore'
sentence.replace('sea', 'mountain')
27. Como retornar um caractere de uma linha com o código ASCII mínimo?
Se você olhar para os códigos ASCII dos elementos, verifica-se, por exemplo, que letras maiúsculas têm códigos mais baixos que minúsculas. A função min()
retorna o caractere da sequência que possui o menor código.min('strings')
28. Como verificar se uma string contém apenas caracteres alfanuméricos?
Caracteres alfanuméricos incluem letras e números. Para responder a esta pergunta, você pode usar o método isalnum()
.'Ten10'.isalnum()
'Ten10.'.isalnum()
29. Como remover espaços do início de uma linha (do lado esquerdo), do final (do lado direito) ou dos dois lados da linha?
Aqui, métodos lstrip()
, rstrip()
e , respectivamente, são úteis para nós strip()
.string = ' string of whitespace '
string.lstrip()
string.rstrip()
string.strip()
30. Como verificar se uma string começa com uma determinada sequência de caracteres ou termina com uma determinada sequência de caracteres?
Para responder a essa pergunta, você pode recorrer, respectivamente, aos métodos startswith()
e endswith()
.city = 'New York'
city.startswith('New')
city.endswith('N')
31. Como codificar uma string em ASCII?
O método encode()
permite codificar seqüências de caracteres usando a codificação especificada. A codificação padrão é usada utf-8
. Se um determinado caractere não puder ser representado usando a codificação especificada, será gerado um erro UnicodeEncodeError
.'Fresh Tuna'.encode('ascii')
'Fresh Tuna Â'.encode('ascii')
32. Como sei que uma string inclui apenas espaços?
Existe um método isspace()
que retorna True
apenas se a sequência consistir apenas em espaços.''.isspace()
' '.isspace()
' '.isspace()
' the '.isspace()
33. O que acontece se você multiplicar uma linha por 3?
Uma nova linha será criada, representando a linha original repetida três vezes.'dog' * 3
34. Como tornar o primeiro caractere de cada palavra em uma string maiúscula?
Existe um método title()
que maiúscula a primeira letra de cada palavra em uma seqüência de caracteres.'once upon a time'.title()
35. Como combinar duas linhas?
Você pode usar o operador para concatenar seqüências de caracteres +
.'string one' + ' ' + 'string two'
36. Como usar o método partition ()?
O método partition()
quebra a string pela substring fornecida. Depois disso, o resultado é retornado como uma tupla. Além disso, a substring ao longo da qual a quebra foi realizada também é incluída na tupla.sentence = "If you want to be a ninja"
print(sentence.partition(' want '))
37. Linhas em Python são imutáveis. O que isso significa?
O fato de as strings serem imutáveis sugere que, após a criação de um objeto de string, ele não pode ser alterado. Ao "modificar" as strings, as strings originais não são alteradas. Em vez disso, objetos completamente novos são criados na memória. Você pode provar isso usando a função id()
.proverb = 'Rise each day before the sun'
print( id(proverb) )
proverb_two = 'Rise each day before the sun' + ' if its a weekday'
print( id(proverb_two) )
Ao concatenar 'Rise each day before the sun'
e ' if its a weekday'
na memória, um novo objeto é criado com um novo identificador. Se o objeto original fosse alterado, os objetos teriam o mesmo identificador.38. Se você declarar a mesma linha duas vezes (gravando-a em 2 variáveis diferentes) - quantos objetos serão criados na memória? 1 ou 2?
Um exemplo desse trabalho com seqüências de caracteres é o seguinte fragmento de código:animal = 'dog'
pet = 'dog'
Com essa abordagem, apenas um objeto é criado na memória. Quando me deparei com isso pela primeira vez, não me pareceu intuitivo. Mas esse mecanismo ajuda o Python a economizar memória ao trabalhar com seqüências longas.Isso pode ser provado recorrendo a uma função id()
.animal = 'dog'
print( id(animal) )
pet = 'dog'
print( id(pet) )
39. Como usar os métodos maketrans () e translate ()?
O método maketrans()
permite descrever o mapeamento de um caractere para outro, retornando uma tabela de conversão.O método translate()
permite aplicar a tabela especificada para converter a sequência.
mapping = str.maketrans("abcs", "123S")
"abc are the first three letters".translate(mapping)
Por favor, note que o bar é feito de substituição símbolos a
, b
, c
e s
, respectivamente, os símbolos 1
, 2
, 3
e S
.40. Como remover vogais de uma string?
Uma resposta para essa pergunta é que os caracteres em uma sequência são classificados usando o mecanismo de compreensão de lista. Os símbolos são verificados comparando-se com uma tupla contendo vogais. Se o caractere não estiver incluído na tupla, ele será anexado a uma nova linha.string = 'Hello 1 World 2'
vowels = ('a','e','i','o','u')
''.join([c for c in string if c not in vowels])
41. Em que situações você usa o método rfind ()?
O método rfind()
é semelhante ao método find()
, mas, ao contrário find()
, verifica a sequência não da esquerda para a direita, mas da direita para a esquerda, retornando o índice da primeira ocorrência encontrada da substring desejada.story = 'The price is right said Bob. The price is right.'
story.rfind('is')
Sumário
Costumo explicar a um gerente de produto, uma pessoa de idade, que os desenvolvedores não são dicionários que armazenam descrições de métodos de objetos. Porém, quanto mais métodos o desenvolvedor se lembrar, menos ele precisará pesquisar no Google e mais rápido e agradável ele trabalhará. Espero que agora você possa facilmente responder às perguntas discutidas aqui.Queridos leitores! E o manuseio de strings no Python, você recomendaria àqueles que estão se preparando para uma entrevista?