0
Python(和編碼新手)在這裏。我試圖根據目錄中的文件列表生成XML文件。文件名的前兩個字母對應一個新的國家代碼,我也試圖提取這個。使用PYCOUNTRY將ISO 3166-1 alpha-2轉換爲國家名稱
我打算格式如下:
<ROOT>
<BASIC/>
<FULL>
<INFO>
<server>filname</server>
<country>country</country>
<region/>
</INFO>
</FULL>
</ROOT>
我似乎能夠生成XML文件,但我無法兩位數的國家代碼轉換爲使用pycountry的國家。有人能建議一個可能的解決方案嗎?對代碼其餘部分的任何評論也會有所幫助。
# -*- 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 - 不要在for循環中定義'get_country'。 2 - 文件是以大寫字母還是小寫字母開頭的? – gbe
1 - 好的,我會在外面定義它。我遇到了一個問題,我試圖通過函數來定義文本,但它不會讓我。有什麼建議麼? 2 - 小寫,但我希望儘可能完整。謝謝您的幫助! – RMcLellan
關於1,我不明白你的意思爲什麼你說「它不會讓你」,也不知道你爲什麼指「文本」。 – gbe