Python (und Kodierung Neuling) hier zu konvertieren. Ich versuche, eine XML-Datei basierend auf einer Liste von Dateien in einem Verzeichnis zu erstellen. Die ersten beiden Buchstaben des Dateinamens entsprechen einem neuen Buchstaben-Ländercode und ich versuche, dies ebenfalls zu extrahieren.Verwenden Sie PYCOUNTRY, um ISO 3166-1 Alpha-2 zu Country Name
Mein beabsichtigtes Format ist wie folgt:
<ROOT>
<BASIC/>
<FULL>
<INFO>
<server>filname</server>
<country>country</country>
<region/>
</INFO>
</FULL>
</ROOT>
Ich scheine die XML-Datei erzeugen zu können, aber ich bin nicht in der Lage des zweistelligen Ländercode in das Land pycountry verwenden zu konvertieren. Könnte jemand bitte eine mögliche Lösung vorschlagen? Alle Kommentare zum Rest des Codes wären ebenfalls hilfreich.
# -*- coding: utf-8 -*-
import lxml.etree as xml
import pycountry
import glob
import gettext
gettext.bindtextdomain('iso3166', pycountry.LOCALES_DIR)
_c = lambda t: gettext.dgettext('iso3166', t)
def createXML(outfile):
root = xml.Element("ROOT")
basic = xml.Element("BASIC")
full = xml.Element("FULL")
root.append(basic)
root.append(full)
# add file information
for filename in glob.glob("*.*"):
info = xml.Element("INFO")
server = xml.SubElement(info, "server")
server.text = filename
short = filename[:2]
country = xml.SubElement(info, "country")
def get_country(code):
return _c(pycountry.countries.get(alpha2=code).name)
country.text = get_country(short)
region = xml.SubElement(info, "region")
full.append(info)
print xml.tostring(root, pretty_print=True)
#save new XML
# tree = xml.ElementTree(root)
# with open(filename, "w") as fh:
# tree.write(fh)
#--------------------------------------------------------
if __name__ == "__main__":
createXML("info.xml")
1 - Definieren Sie 'get_country' nicht innerhalb Ihrer for-Schleife. 2 - Beginnen die Dateien mit Groß- oder Kleinbuchstaben? – gbe
1 - OK, ich definiere es draußen. Ich habe ein Problem, bei dem ich versuche, den Text als Ergebnis einer Funktion zu definieren, und es lässt mich nicht. Irgendwelche Vorschläge? 2 - Kleinbuchstaben, aber ich möchte so vollständig wie möglich sein. Danke für die Hilfe! – RMcLellan
In Bezug auf 1 verstehe ich nicht, was du meinst, warum du sagst "es wird dich nicht lassen" oder was du meinst, warum du dich auf "den Text" beziehst. – gbe