Форум сайта python.su
Такая проблема читаю данные из xml файла в словарь, потом добавляю его в список, после этого пытаюсь записать в файл. Никакие преобразования типа unicode и последующий encode не работают. Чувствую что где то ошибаюсь но не могу понять где.
# -*- coding: UTF-8 -*-
import xml.dom.minidom
from xml.dom.minidom import Node
a =
doc = xml.dom.minidom.parse(“ait.xml”)
for node in doc.getElementsByTagName(“item”):
g={}
g=itype=node.getAttribute(“type”)
g=node.getAttribute(“date”)
g=node.getAttribute(“time”)
g=node.getAttribute(“file”)
g=node.getAttribute(“duration”)
if itype == “Movie”:
a.append(g)
import ntpath
f=open ('11.html', ‘w’)
f.write(“<html>\n”)
f.write(“<title>Generated by python</title>\n”)
f.write(“<Body>\n”)
f.write('<table border=“1” cellspacing=“1” cellpadding=“4”>\n')
i=1
while i < len(a):
f.write(“<tr><td>”+a+“</td>”+“<td>”+a+“</td>”+“<td>”+ ntpath.basename((repr(a))).encode(“utf-8s”)+ “</td><td>”+a+ “</td></tr>\n”) # вот тут участок критичный
i+=1
f.write(“</table>\n”)
f.write(“</body></html>\n”)
f.close
файл который парсится находится http://dumpz.org/8763/
Офлайн
так попробуйте, у меня все нормально пишется
import xml.dom.minidom as md
if "__main__" == __name__ :
attrs = ["type", "date", "time", "file", "duration"]
dom = md.parse("ait.xml")
lst = [dict((a, x.getAttribute(a)) for a in attrs) for x in dom.getElementsByTagName("item") if "Movie" == x.getAttribute("type")]
f = file('11.html', 'wb')
f.write("<html>\n")
f.write("<title>Generated by python</title>\n")
f.write("<Body>\n")
f.write('<table border="1" cellspacing="1" cellpadding="4">\n')
for l in lst :
l["file"] = os.path.basename(l["file"])
f.write((u"<tr><td>%(time)s</td><td>%(date)s</td><td>%(file)s</td><td>%(duration)s</td></tr>\n" % l).encode("utf-8"))
f.close()
Офлайн
Спасибо. Кодировка utf-8s случайно сохранилась при нажатии ctrl+s, вилимо палец уже обессилел контрол жать.
Офлайн