Ich lese Daten aus Apache Log-Datei. Es gibt einige Texte, die kodiert sind. Wie dieser Zeile:Python 3 string decode
192.168.1.17 - - [04/Aug/2016:18:45:00 +0800] "GET /d/?q=\xa9\xfa\xa4\xd1\xb7|\xa7\xf3\xa6n HTTP/1.1" 302 3734 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"
Ich möchte entschlüsseln '\ xA9 \ xfa \ XA4 \ xd1 \ XB7 | \ xa7 \ XF3 \ xa6n'.
In Python 2, verwende ich den Code:
print(line.decode('string-escape').decode('big5'))
Das Ergebnis:
明天會更好
Aber ich kann den richtigen Code in Python nicht schreiben 3.
Ich versuche, Verwende den Code:
with open('access.log', 'r') as f:
line = f.read()
print(bytes(line, 'latin-1').decode('big5'))
Das Ergebnis t:
\xa9\xfa\xa4\xd1\xb7|\xa7\xf3\xa6n
Oder dieser Code:
with open('access.log', 'rb') as f:
line = f.read()
print(line.decode('big5'))
Das Ergebnis:
\xa9\xfa\xa4\xd1\xb7|\xa7\xf3\xa6n
Es scheint, weil mit Dateilese Form Python 3, die '\ x' wird '\ x' . Also, wenn mir jemand hilft, dieses Problem zu lösen? Vielen Dank.
Vielen Dank. Dein Code funktioniert. mit offenem ('access.log', 'R') wie f: line = f.read() Schritt1 = line.encode ("latin1") Schritt 2 = step1.decode ("unicode_escape") step3 = step2.encode ("latin1") final_text = step3.decode ("big5") drucken (final_text) –