Base64-String in Python 3 dekodieren (mit lxml oder nicht)

Ich weiß, das sieht peinlich einfach aus, und ich denke, das Problem ist, dass ich einfach kein klares Verständnis für all das habeByte-Str-Unicode (undverschlüsseln entschlüsseln, ehrlich gesagt) noch Zeug.

Ich habe versucht, meinen Arbeitscode auf Python 3 zum Laufen zu bringen. Der Teil, an dem ich festhalte, ist, wenn ich eine XML mit parselxml und dekodieren Sie eine Base64-Zeichenfolge, die in diesem XML ist.

Der Code funktioniert jetzt folgendermaßen:

Ich rufe die Binärdaten mit einer XPath-Abfrage ab'.../binary/text()'. Dies erzeugt eine Liste mit einem Element, die a enthältlxml.etree._ElementUnicodeResult Objekt. Dann konnte ich mit Python 2 Folgendes tun:

<code>decoded = source.decode('base64')
</code>

und schlussendlich

<code>output = numpy.frombuffer(decoded)
</code>

Auf Python 3 erhalte ich jedoch eine Fehlermeldung

<code>AttributeError: 'lxml.etree._ElementUnicodeResult' object has no attribute 'decode'
</code>

Das ist nicht so überraschend, weillxml.etree._ElementUnicodeResult ist eine Unterklasse vonstr.

Ein anderer Weg wäre, eine echte zu bekommenstr mit den gleichen Daten drin mit

<code> binary = tree.xpath('//binary')[0]
 binary_string = binary.text
</code>

Das wäre im Wesentlichen das gleiche. Was mache ich also, um es von base64 zu dekodieren? Ich habe das angeschautbase64 Modul, aber es dauert einbytes Objekt als Argument, und ich kann mir nicht vorstellen, wie man präsentiertstr wiebytes, denn wenn ich versuche einen zu konstruierenbytes Objekt, wird Python versuchen, zukodieren die Saite, die ich nicht brauche.

Weiter googelnd bin ich auf die gestoßenbinascii Modul (das indirekt von aufgerufen wirdbase64 jedenfalls, wenn ich mich nicht irre), aber anrufendbinascii.b2a_base64() auf meiner Saite produziert

<code>TypeError: 'str' does not support the buffer interface
</code>

P.S. Ich habe sogar eine beantwortete Frage auf gefundenWie dekodiert man einen Hex-String in Python 3?Dies geschieht jedoch mit einer speziellen Methodebytes.fromhex() deshalb sehe ich nicht, wie es hilfreich wäre.

Könnte mir bitte jemand sagen, was ich vermisse? Ich fürchte, der größte Teil des Beitrags ist irrelevant und erschwert nur meine Schande, aber zumindest wisst ihr eswas ich versucht habe.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage