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, wie z. B. html1 oder html2. Stattdessen wird die Zeichenfolge als festes Muster ausgewertet, das aus dem Präfix „html“ gefolgt vom Wert von i.
bestehtWenn ich den Inhalt der vordefinierten Variablen html1, html2 usw. verwenden möchte, muss ich deren Werte explizit abrufen, beispielsweise 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.
Das obige ist der detaillierte Inhalt vonWarum kann das Erstellen einer Variablen und die Verwendung dieser Variablen als Referenz zu Verwirrung führen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!