Ich benutze xmlcharrefreplace
, um nicht standardisierte Zeichen in einer Zeichenfolge zu ersetzen, so dass es in einer XML-Datei gespeichert werden kann. Später möchte ich diese Zeichenfolge wieder in die ursprünglichen Zeichen konvertieren.Python string encoding xmlcharrefreplace decode
import openpyxl
import cgi
from html.parser import HTMLParser
parser = HTMLParser()
startingString = "Tỉnh Đồng Nai" #example string
print("Starting string: " + startingString) #Starting string: Tỉnh Đồng Nai
# 1. This string contains non-standard characters. Convert these characters using xmlcharrefreplace
escapedString = cgi.escape(startingString)
strEscapedString = str(escapedString)
aposString = strEscapedString.replace("'", "'")
savedToExcelString = str(aposString.encode('utf-8', 'xmlcharrefreplace'))[2:-1]
print("xmlcharrefreplace converted to: " + savedToExcelString) #xmlcharrefreplace converted to: T\xe1\xbb\x89nh \xc4\x90\xe1\xbb\x93ng Nai
# 2. The string is saved to an xml file
# 3. The string is read from an xml file
# 4. Convert the string back into the original starting string
unescapedString = parser.unescape(savedToExcelString)
#what do I do here??? I need to 'undo' the xmlcharrefreplace encoding
print(startingString + " == " + unescapedString + " is " + str(startingString == unescapedString))
# Tỉnh Đồng Nai == T\xe1\xbb\x89nh \xc4\x90\xe1\xbb\x93ng Nai is False
# ^^ Should be the same string at the end
Bitte beachte, dass ich nicht codecs.open() verwenden, weil ich die Bibliothek openpyxl bin mit einer Excel-Datei als auch die Daten enthält, zu öffnen. Es gibt keine Beschränkungen für den Zeichensatz, den die Eingabe haben könnte - Ich möchte, dass die letzte Zeichenfolge mit der ursprünglichen Zeichenfolge übereinstimmt.
Ziel: Konvertieren von Zeichen aus xmlcharrefreplace zurück in ihr Skriptzeichen. Zum Beispiel: "\ x90" wird "ồ"
Danke, das ist die richtige Antwort. Leider funktioniert die Wörterbuchzuordnungsidee nicht mit dieser Programmarchitektur. –