In einem Python-Skript wollte ich verschiedene HTML-Strings mit derselben Logik testen. Mein Ansatz bestand darin, einen Bereich zu durchlaufen, um mehrere Instanzen der HTML-String-Variablen zu erstellen, aber es funktionierte nicht wie erwartet.
# DO NOT DO THIS for i in range(1, 5): html = f"html{i}" soup = BeautifulSoup(html, "html.parser") print('----', soup)
Das Verhalten, das ich beobachtet habe, ist auf die Art und Weise zurückzuführen, wie die formatierte Zeichenfolge f"html{i}" interpretiert wird. In meinem Code ergibt f"html{i}" die Literale „html1“, „html2“, „html3“ und „html4“ und nicht den Inhalt von Variablen mit den Namen html1, html2 usw.
Python ersetzt f"html{i}" nicht automatisch durch den Wert der Variablen, deren Name dynamisch erstellt wird, z. B. html1 oder html2. Stattdessen wird die Zeichenfolge als festes Muster ausgewertet, das aus dem Präfix „html“ und dem Wert von i besteht.
Wenn ich den Inhalt der vordefinierten Variablen html1, html2 usw. verwenden möchte, muss ich deren Werte explizit abrufen, z. B. mithilfe eines Wörterbuchs, um Zeichenfolgennamen ihrem tatsächlichen Inhalt zuzuordnen.
Hier ist ein Beispiel, das dies veranschaulicht:
from bs4 import BeautifulSoup # Define the variables html1 = "Test 1" html2 = "Test 2" html3 = "Test 3" html4 = "Test 4" # Store them in a dictionary for easy access html_dict = { "html1": html1, "html2": html2, "html3": html3, "html4": html4 } # Iterate and process each html content for i in range(1, 5): key = f"html{i}" html = html_dict[key] soup = BeautifulSoup(html, "html.parser") print('----', soup)
Variablen definieren:
Wörterbuch für die Variablensuche:
Über Schlüssel iterieren:
Parsen und Drucken:
---- Test 1 ---- Test 2 ---- Test 3 ---- Test 4
Dieser Ansatz greift basierend auf dem Iterationsindex dynamisch auf den Inhalt der Variablen zu und gibt den beabsichtigten Inhalt korrekt aus.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3