Уведомления

Группа в Telegram: @pythonsu

#1 Май 18, 2009 20:04:21

qmor
От:
Зарегистрирован: 2009-05-14
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодировкой и запись в файл

Такая проблема читаю данные из 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/



Офлайн

#2 Май 19, 2009 04:25:13

pyuser
От:
Зарегистрирован: 2007-05-13
Сообщения: 658
Репутация: +  36  -
Профиль   Отправить e-mail  

Проблема с кодировкой и запись в файл

так попробуйте, у меня все нормально пишется

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 откровенно говоря не понял :)



Офлайн

#3 Май 19, 2009 08:44:09

qmor
От:
Зарегистрирован: 2009-05-14
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с кодировкой и запись в файл

Спасибо. Кодировка utf-8s случайно сохранилась при нажатии ctrl+s, вилимо палец уже обессилел контрол жать.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version