Introdução
Neste projeto, você aprenderá como extrair nomes de usuário de texto usando Python. Esta é uma tarefa comum em mídias sociais e aplicativos de mensagens instantâneas, onde o caractere @ é frequentemente usado para mencionar alguém.
👀 Visualização
## Exemplo 1
>>> from parse_username import after_at
>>> text = "@LabEx @labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemplo 2
>>> text = "@LabEx@labex I won in the @ competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemplo 3
>>> text = "@labex @LabEx I won in the @LabEx competition"
>>> print(after_at(text))
['LabEx', 'labex']
## Exemplo 4
>>> text = "@!LabEx @labex I won in the competition"
>>> print(after_at(text))
['labex']
## Exemplo 5
>>> text = "I won in the competition@"
>>> print(after_at(text))
[]
## Exemplo 6
>>> text = "LabEx@!"
>>> print(after_at(text))
[]
## Exemplo 7
>>> text = "@!@LabEx @labex I won in the @LabEx competition @experiment"
>>> print(after_at(text))
['LabEx', 'experiment', 'labex']
🎯 Tarefas
Neste projeto, você aprenderá:
- Como implementar a função
after_atpara extrair nomes de usuário de um determinado texto - Como lidar com casos extremos (edge cases) e otimizar o desempenho da função
- Como testar a função com vários cenários de entrada
🏆 Conquistas
Após concluir este projeto, você será capaz de:
- Entender como usar Python para analisar e extrair informações relevantes de texto
- Desenvolver uma função robusta e eficiente para extrair nomes de usuário de texto
- Aplicar suas habilidades de resolução de problemas para aprimorar a funcionalidade da função
- Testar seu código minuciosamente para garantir que ele funcione conforme o esperado
Implementar a Função after_at
Nesta etapa, você implementará a função after_at para extrair nomes de usuário de um determinado texto.
Abra o arquivo
parse_username.pyem seu editor de código.Localize a definição da função
after_at.A função deve receber uma string
textcomo entrada, que pode estar vazia.Dentro da função, inicialize uma lista vazia chamada
usernamespara armazenar os nomes de usuário extraídos.Encontre o índice da primeira ocorrência do caractere
@notextusando o métodofind()e armazene-o na variávelat_index.Enquanto
at_indexnão for-1(o que significa que o caractere@foi encontrado):- Inicialize uma string vazia chamada
username. - Itere sobre os caracteres na string
text, começando do índice após o caractere@. - Para cada caractere, verifique se ele é alfanumérico ou um sublinhado usando os métodos
isalnum()eisalpha(). - Se o caractere for válido, adicione-o à string
username. - Se o caractere não for válido, saia do loop.
- Se o
usernamenão estiver vazio, adicione-o à listausernames. - Encontre a próxima ocorrência do caractere
@na stringtext, começando do índice após o caractere@anterior.
- Inicialize uma string vazia chamada
Após o loop, remova quaisquer nomes de usuário duplicados da lista
usernamesusando a funçãoset().Ordene a lista
usernamesem ordem decrescente com base na contagem de cada nome de usuário usando a funçãosorted()com uma função chave (key function) personalizada.Retorne a lista
usernamesordenada.
Sua função after_at completa deve ser semelhante a esta:
def after_at(text):
usernames = []
at_index = text.find("@") ## Encontre o índice da primeira ocorrência de "@"
while at_index != -1: ## Continue o loop até que não sejam encontrados mais símbolos "@"
username = ""
for char in text[
at_index + 1 :
]: ## Itere sobre os caracteres após o símbolo "@"
if (
char.isalnum() or char == "_" or char.isalpha()
): ## Verifique se o caractere é alfanumérico ou sublinhado
username += char ## Adicione o caractere ao nome de usuário
else:
break ## Se o caractere não for alfanumérico ou sublinhado, pare de adicionar caracteres ao nome de usuário
if username:
usernames.append(username) ## Adicione o nome de usuário extraído à lista
at_index = text.find(
"@", at_index + 1
) ## Encontre o próximo símbolo "@" começando do próximo índice
## Remova duplicatas e ordene pela contagem de ocorrências em ordem decrescente
usernames = sorted(
list(set(usernames)), key=lambda x: usernames.count(x), reverse=True
)
return usernames
Testar a Função after_at
Nesta etapa, você testará a função after_at com os exemplos fornecidos.
- Abra o arquivo
parse_username.pyem seu editor de código. - Localize o bloco
if __name__ == "__main__":na parte inferior do arquivo. - Dentro do bloco, adicione o seguinte código para testar a função
after_at:
## Example 1
print(after_at("@LabEx @labex I won in the @ competition"))
## Example 2
print(after_at("@LabEx@labex I won in the @ competition"))
## Example 3
print(after_at("@labex @LabEx I won in the @LabEx competition"))
## Example 4
print(after_at("@!LabEx @labex I won in the competition"))
## Example 5
print(after_at("I won in the competition@"))
## Example 6
print(after_at("LabEx@!"))
## Example 7
print(after_at("@!@LabEx @labex I won in the @LabEx competition @experiment"))
- Salve o arquivo
parse_username.py. - Execute o arquivo
parse_username.pyem seu terminal ou prompt de comando usando o seguinte comando:
python parse_username.py
- Verifique se a saída corresponde aos resultados esperados fornecidos no desafio.
['LabEx', 'labex']
['LabEx', 'labex']
['LabEx', 'labex']
['labex']
[]
[]
['LabEx', 'experiment', 'labex']
Resumo
Parabéns! Você concluiu este projeto. Você pode praticar mais laboratórios no LabEx para aprimorar suas habilidades.



