Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 2, 2012 09:43:50

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

У меня есть xml, в котором есть русские символы. Когда я вывожу его на экран print xml русские символы не отображаются, вместо них печатается, что-то непонятное. Как это побороть?



Офлайн

#2 Ноя. 2, 2012 09:55:36

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

Может выложишь, что именно тебе выводится, а то телепаты в отпуске.

Офлайн

#3 Ноя. 2, 2012 10:08:41

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

odnochlen
Может выложишь, что именно тебе выводится, а то телепаты в отпуске.



Офлайн

#4 Ноя. 2, 2012 10:45:49

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

Извечная проблема Виндаус и кодировки в терминале!
Смените кодировку в файле ХМЛ на cp866 и будет вам счастие.
Ну и погуглите на ту же тему !



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#5 Ноя. 2, 2012 12:26:05

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

В xml текст в кодировке utf8. Не знаю, зачем тебе его в читаемом виде выводить в консоль, но попробуй print xml.decode('utf8')

Офлайн

#6 Ноя. 2, 2012 12:49:54

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

odnochlen
В xml текст в кодировке utf8. Не знаю, зачем тебе его в читаемом виде выводить в консоль, но попробуй print xml.decode('utf8')
Я в дальнейшем его обрабатываю. Те поля, что по английски работают, а те, что с русскими символами - сбоят.

import xml.dom.minidom
import urllib
f = urllib.urlopen('http://samstar.ucoz.ru/news/rss/')
st= f.read()
print f.read()
print ">>>", st.decode('utf8')
f.close()

Выдает ошибку. см. вложенный файл



Офлайн

#7 Ноя. 2, 2012 14:30:25

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

В юникодной строке есть символы, которые не могут быть декодированы в кодировку консоли (cp866)

print st.decode('utf8').encode('cp866', 'ignore')
# или так
print unicode(st, 'utf8').encode('cp866', 'ignore')

Отредактировано odnochlen (Ноя. 2, 2012 14:31:16)

Офлайн

#8 Ноя. 6, 2012 12:12:22

evgenyivanov
От:
Зарегистрирован: 2011-09-27
Сообщения: 32
Репутация: +  0  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

odnochlen
В юникодной строке есть символы, которые не могут быть декодированы в кодировку консоли (cp866)
Спасибо. На печать русские буквы выводятся. Но дальнейшее использование хмл

import xml.dom.minidom
import urllib
f = urllib.urlopen('http://samstar.ucoz.ru/news/rss/')
st= f.read().decode('utf8').encode('cp866', 'ignore')
print st
#print ">>>", st.decode('utf8').encode('cp866', 'ignore')
par1 = xml.dom.minidom.parseString(st)
data = par1.getElementsByTagName('title')    
n= -1
for e in data:
    for t in e.childNodes:
		n = n +1
		if (n > 0):
			print t.data.decode('utf8')
f.close()
Причем, если я заменю тег на “link”, значение которого всегда - латиница, никакие ошибки не возникают.



Офлайн

#9 Ноя. 6, 2012 14:45:57

odnochlen
Зарегистрирован: 2012-06-28
Сообщения: 794
Репутация: +  14  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

Кодировать в cp866 нужно только для сосноли, для парсера это не надо.

Офлайн

#10 Ноя. 6, 2012 15:46:32

pellon
Зарегистрирован: 2012-10-29
Сообщения: 98
Репутация: +  -1  -
Профиль   Отправить e-mail  

Python 2.7 вывод русских букв

простите, а что такое xml??
я видел файлы с таким фарматом. это както связано?

и чо такое парсер?

Отредактировано pellon (Ноя. 6, 2012 15:46:58)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version