2016-09-09 3 views
2

Ich versuche, BS4 und Python zu verwenden, um den Inhalt des ersten Tags <translate> in einer HTML-Datei zu speichern und zu ersetzen.Python3 Schöne Suppe bekomme HTML-Tag-Anker

nun so etwas wie dies Ich versuche zu tun:

translate_bs4 = bs4_object.find('translate') 
translate_key = '{{ key }}' 
translate_initial = str(title_bs4) 
translate_bs4.string = translate_key 

Mein Testfall ist:

<translate>tag with <other_tag>some text</other_tag></translate> 
<much_longer_file>...</much_longer_file> 

und die HTML wird die erwartet man von:

<translate>{{ key }}</translate> 
<much_longer_file>...</much_longer_file> 

aber der Wert von translate_initial ist

<translate>tag with <other_tag>some text</other_tag></translate> 

statt

tag with <other_tag>some text</other_tag> 

erwartet Ich weiß, dass es einfach mit einem regex extrahiert werden kann, aber ich möchte ein einige weitere DOM-bezogene Lösung.

Antwort

1

Versuchen Sie folgendes:

translate_bs4 = bs4_object.find('translate') 
translate_initial = translate_bs4.decode_contents(formatter="html") 
+0

Ihre Lösung funktioniert, aber ich habe ein paar Probleme mit einigen Nicht-ASCII-Zeichen, die keine Entsprechung HTML-Entität hat. Gelöst, dass Formatierer auf None gesetzt wurde. Vielen Dank! : D –