Sagen Sie, dass ich dieses Stück HTML habe:
%Vor%Wie ersetze ich den ersten "Text" durch ein Ankerelement, so wird das Ergebnis:
%Vor%Ich möchte im Grunde eine Teilzeichenfolge in einem NavigableString durch ein Tag ersetzen.
Ihre Frage besteht aus zwei Teilen:
Den einzelnen NavigableString "Dieser Text ist mein" in einen NavigableString, ein Tag und einen anderen NavigableString verwandeln.
Ersetzen des NavigableString "Dieser Text ist mein" mit den drei neuen Elementen.
Die Antwort auf # 1 hängt von Ihrer Situation ab. Insbesondere hängt es davon ab, wie Sie bestimmen, welcher Teil des Textes verknüpft werden muss. Ich werde einen regulären Ausdruck verwenden, um die Zeichenfolge "text" zu finden:
%Vor% Nun zu # 2. Das ist nicht so einfach wie es sein könnte, aber es ist definitiv möglich. Drehen Sie zuerst text
in eine Tag
, die den Linktext enthält:
re.split()
hat this
und is_my
in normale Unicode-Zeichenfolgen umgewandelt. Verwandle sie zurück in NavigableString
s, damit sie als Elemente in den Baum zurückkehren können:
Verwenden Sie nun replace_with()
und insert_after
, um das alte Element durch die drei neuen Elemente zu ersetzen:
Nun sollte Ihr Baum so aussehen, wie Sie es wollen:
%Vor%Tags und Links python beautifulsoup