Extrahiere Benutzernamen aus Text mit Python

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Projekt lernst du, wie du mithilfe von Python Benutzernamen aus Text extrahierst. Dies ist eine häufige Aufgabe in sozialen Medien und Instant-Messaging-Anwendungen, wo das @-Zeichen oft verwendet wird, um jemanden zu erwähnen.

👀 Vorschau

## Beispiel 1
>>> from parse_username import after_at
>>> text = "@LabEx @labex Ich habe im @ Wettbewerb gewonnen"
>>> print(after_at(text))
['LabEx', 'labex']
## Beispiel 2
>>> text = "@LabEx@labex Ich habe im @ Wettbewerb gewonnen"
>>> print(after_at(text))
['LabEx', 'labex']
## Beispiel 3
>>> text = "@labex @LabEx Ich habe im @LabEx Wettbewerb gewonnen"
>>> print(after_at(text))
['LabEx', 'labex']
## Beispiel 4
>>> text = "@!LabEx @labex Ich habe im Wettbewerb gewonnen"
>>> print(after_at(text))
['labex']
## Beispiel 5
>>> text = "Ich habe im Wettbewerb@ gewonnen"
>>> print(after_at(text))
[]
## Beispiel 6
>>> text = "LabEx@!"
>>> print(after_at(text))
[]
## Beispiel 7
>>> text = "@!@LabEx @labex Ich habe im @LabEx Wettbewerb @experiment gewonnen"
>>> print(after_at(text))
['LabEx', 'experiment', 'labex']

🎯 Aufgaben

In diesem Projekt wirst du lernen:

  • Wie du die after_at-Funktion implementierst, um Benutzernamen aus einem gegebenen Text zu extrahieren
  • Wie du Randfälle behandelst und die Leistung der Funktion optimiermst
  • Wie du die Funktion mit verschiedenen Eingabeszenarien testest

🏆 Errungenschaften

Nach Abschluss dieses Projekts wirst du in der Lage sein:

  • Zu verstehen, wie du Python verwendest, um relevante Informationen aus Text zu analysieren und zu extrahieren
  • Einen robusten und effizienten Code zu entwickeln, um Benutzernamen aus Text zu extrahieren
  • Deine Problemlösefähigkeiten anzuwenden, um die Funktionalität des Codes zu verbessern
  • Deinen Code gründlich zu testen, um sicherzustellen, dass er wie erwartet funktioniert

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/sets("Sets") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") subgraph Lab Skills python/strings -.-> lab-302751{{"Extrahiere Benutzernamen aus Text mit Python"}} python/lists -.-> lab-302751{{"Extrahiere Benutzernamen aus Text mit Python"}} python/sets -.-> lab-302751{{"Extrahiere Benutzernamen aus Text mit Python"}} python/function_definition -.-> lab-302751{{"Extrahiere Benutzernamen aus Text mit Python"}} python/file_operations -.-> lab-302751{{"Extrahiere Benutzernamen aus Text mit Python"}} end

Implementiere die after_at-Funktion

In diesem Schritt wirst du die after_at-Funktion implementieren, um Benutzernamen aus einem gegebenen Text zu extrahieren.

  1. Öffne die Datei parse_username.py in deinem Code-Editor.

  2. Locate die after_at-Funktionsdefinition.

  3. Die Funktion sollte einen String text als Eingabe entgegennehmen, der möglicherweise leer ist.

  4. Innerhalb der Funktion initialisiere eine leere Liste namens usernames, um die extrahierten Benutzernamen zu speichern.

  5. Finde den Index des ersten Vorkommens des @-Zeichens im text mithilfe der find()-Methode und speichere ihn in der at_index-Variablen.

  6. Solange der at_index nicht -1 ist (was bedeutet, dass das @-Zeichen gefunden wurde):

    • Initialisiere einen leeren String namens username.
    • Iteriere über die Zeichen im text-String, beginnend ab dem Index nach dem @-Zeichen.
    • Für jedes Zeichen überprüfe, ob es alphanumerisch oder ein Unterstrich ist, mithilfe der isalnum()- und isalpha()-Methoden.
    • Wenn das Zeichen gültig ist, hänge es an den username-String an.
    • Wenn das Zeichen nicht gültig ist, breche die Schleife ab.
    • Wenn der username nicht leer ist, hänge ihn an die usernames-Liste an.
    • Finde das nächste Vorkommen des @-Zeichens im text-String, beginnend ab dem Index nach dem vorherigen @-Zeichen.
  7. Nachdem die Schleife beendet ist, entferne alle doppelten Benutzernamen aus der usernames-Liste mithilfe der set()-Funktion.

  8. Sortiere die usernames-Liste in absteigender Reihenfolge basierend auf der Anzahl der Vorkommen jedes Benutzernamens, indem du die sorted()-Funktion mit einer benutzerdefinierten Schlüsselfunktion verwendest.

  9. Gebe die sortierte usernames-Liste zurück.

Deine abgeschlossene after_at-Funktion sollte so aussehen:

def after_at(text):
    usernames = []
    at_index = text.find("@")  ## Find the index of the first occurrence of "@"
    while at_index!= -1:  ## Continue loop until no more "@" symbols are found
        username = ""
        for char in text[
            at_index + 1 :
        ]:  ## Iterate over the characters after the "@" symbol
            if (
                char.isalnum() or char == "_" or char.isalpha()
            ):  ## Check if the character is alphanumeric or underscore
                username += char  ## Add the character to the username
            else:
                break  ## If the character is not alphanumeric or underscore, stop adding characters to the username
        if username:
            usernames.append(username)  ## Add the extracted username to the list
        at_index = text.find(
            "@", at_index + 1
        )  ## Find the next "@" symbol starting from the next index

    ## Remove duplicates and sort by occurrence count in descending order
    usernames = sorted(
        list(set(usernames)), key=lambda x: usernames.count(x), reverse=True
    )

    return usernames

Teste die after_at-Funktion

In diesem Schritt wirst du die after_at-Funktion mit den bereitgestellten Beispielen testen.

  1. Öffne die Datei parse_username.py in deinem Code-Editor.
  2. Locate den Block if __name__ == "__main__": am Ende der Datei.
  3. Füge innerhalb des Blocks folgenden Code hinzu, um die after_at-Funktion zu testen:
## Beispiel 1
print(after_at("@LabEx @labex Ich habe im @ Wettbewerb gewonnen"))
## Beispiel 2
print(after_at("@LabEx@labex Ich habe im @ Wettbewerb gewonnen"))
## Beispiel 3
print(after_at("@labex @LabEx Ich habe im @LabEx Wettbewerb gewonnen"))
## Beispiel 4
print(after_at("@!LabEx @labex Ich habe im Wettbewerb gewonnen"))
## Beispiel 5
print(after_at("Ich habe im Wettbewerb@ gewonnen"))
## Beispiel 6
print(after_at("LabEx@!"))
## Beispiel 7
print(after_at("@!@LabEx @labex Ich habe im @LabEx Wettbewerb @experiment gewonnen"))
  1. Speichere die Datei parse_username.py.
  2. Führe die Datei parse_username.py in deinem Terminal oder der Befehlszeile mit dem folgenden Befehl aus:
python parse_username.py
  1. Überprüfe, ob die Ausgabe mit den erwarteten Ergebnissen übereinstimmt, die im Challenge angegeben sind.
['LabEx', 'labex']
['LabEx', 'labex']
['LabEx', 'labex']
['labex']
[]
[]
['LabEx', 'experiment', 'labex']
✨ Lösung prüfen und üben

Zusammenfassung

Herzlichen Glückwunsch! Du hast dieses Projekt abgeschlossen. Du kannst in LabEx weitere Labs absolvieren, um deine Fähigkeiten zu verbessern.