Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Python для новичков
  • » python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log? [RSS Feed]

#1 Ноя. 8, 2015 09:15:26

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

re_title = re.compile(r"<title*>(.+?)</title>", re.IGNORECASE | re.DOTALL)
...
s = str(content)
print(s[0:1000])
print(re_title.findall(s))
print(re_title.search(s).group(1)) #.encode("cp866"))



вывод:

b'<!DOCTYPE html><html class=“i-ua_js_no i-ua_css_standart i-ua_browser_unknown i-ua_pseudo_yes” lang=“ru”><head xmlnsg="http://ogp.me/ns#“><meta http-equiv=”X-UA-Compatible“ content=”IE=edge“><title>\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81</title><meta http-equiv=Content-Type content=”text/html;charset=UTF-8“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png“ sizes=”76x76“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-120x120.png“ sizes=”120x120“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-152x152.png“ sizes=”152x152“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-180x180.png“ sizes=”180x180“><link rel=”alternate“ type=”application/rss+xml“ title=”\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x81\xd1\x82\xd0\xb8 \xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81\xd0\xb0“ href=”//company.yandex.ru/news/news.rss“><link rel=”alternate"



\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81

Отредактировано snake_eater (Ноя. 8, 2015 13:17:25)

Офлайн

#2 Ноя. 8, 2015 09:49:12

J.R.
Зарегистрирован: 2015-07-18
Сообщения: 147
Репутация: +  16  -
Профиль  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

.

Отредактировано J.R. (Янв. 27, 2016 08:32:23)

Офлайн

#3 Ноя. 8, 2015 09:51:03

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

Надо скачать, потом раскодировать с помощью кодировки, указанной сервером (или в странице), потом искать нужный текст, а потом уже найденный текст выводить на консоль, предварительно установив для консоли кодировку utf-8.

Текст страницы в utf-8, это значит, что там могут быть символы, которые не могут быть закодированы в cp1251. Поэтому в винде нужно консоль настроить на utf-8.



Офлайн

#4 Ноя. 8, 2015 13:16:06

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

J.R.
У вас в выхлопе байткод. Чтоб получить читабельный выхлоп, вам нужно этот байткод декодировать в желанную кодировку. Пример:

упростим задачу, как вывести в файл?

буду писать лог в файл

logging.basicConfig(filename="log.txt", level=logging.DEBUG)
re_title = re.compile(r"<title*>(.+?)</title>", re.IGNORECASE | re.DOTALL)
...
s = str(content)
logging.info(s[0:1000])
logging.info(re_title.findall(s))
logging.info(re_title.search(s).group(1))

получаю. в файле

INFO:root:b'<!DOCTYPE html><html class=“i-ua_js_no i-ua_css_standart i-ua_browser_unknown i-ua_pseudo_yes” lang=“ru”><head xmlnsg="http://ogp.me/ns#“><meta http-equiv=”X-UA-Compatible“ content=”IE=edge“><title>\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81</title><meta http-equiv=Content-Type content=”text/html;charset=UTF-8“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png“ sizes=”76x76“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-120x120.png“ sizes=”120x120“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-152x152.png“ sizes=”152x152“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-180x180.png“ sizes=”180x180“><link rel=”alternate“ type=”application/rss+xml“ title=”\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x81\xd1\x82\xd0\xb8 \xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81\xd0\xb0“ href=”//company.yandex.ru/news/news.rss“><link rel=”alternate"
INFO:root:
INFO:root:\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81



если добавить

logging.info(re_title.search(s).group(1).decode(“utf-8”))

выводит ошибку

logging.info(re_title.search(s).group(1).decode(“utf-8”))
AttributeError: ‘str’ object has no attribute ‘decode’

Офлайн

#5 Ноя. 8, 2015 13:27:04

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

кстати та же фигня если просто записывать в файл

with open("file.txt", "w") as f:
		f.write(re_title.search(s).group(1))

получаю в файле

\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81

так что нужно сделать с re_title.search(s).group(1) ?

чтобы получить текст

Отредактировано snake_eater (Ноя. 8, 2015 13:27:47)

Офлайн

#6 Ноя. 8, 2015 14:13:14

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

        
logging.basicConfig(filename="log.txt", level=logging.DEBUG)
re_title = re.compile(r"<title*>(.+?)</title>", re.IGNORECASE | re.DOTALL)
        s = str(content)
	logging.info(s[0:1000])
	logging.info(re_title.findall(s))
	logging.info("Заголовок: " + re_title.search(s).group(1))
	with open("file.txt", "w") as f:
		f.write("Записать текст с кирилицей")
		f.write(re_title.search(s).group(1))


получаю
INFO:root:b'<!DOCTYPE html><html class=“i-ua_js_no i-ua_css_standart i-ua_browser_unknown i-ua_pseudo_yes” lang=“ru”><head xmlnsg="http://ogp.me/ns#“><meta http-equiv=”X-UA-Compatible“ content=”IE=edge“><title>\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81</title><meta http-equiv=Content-Type content=”text/html;charset=UTF-8“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-76x76.png“ sizes=”76x76“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-120x120.png“ sizes=”120x120“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-152x152.png“ sizes=”152x152“><link rel=”apple-touch-icon“ href=”//yastatic.net/morda-logo/i/apple-touch-icon/ru-180x180.png“ sizes=”180x180“><link rel=”alternate“ type=”application/rss+xml“ title=”\xd0\x9d\xd0\xbe\xd0\xb2\xd0\xbe\xd1\x81\xd1\x82\xd0\xb8 \xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81\xd0\xb0“ href=”//company.yandex.ru/news/news.rss“><link rel=”alternate"
INFO:root:
INFO:root:Заголовок: \xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81



Записать текст с кирилицей\xd0\xaf\xd0\xbd\xd0\xb4\xd0\xb5\xd0\xba\xd1\x81

т.е. текст заданный в коде записыввается нормально
а текст полученый с web-страницы превращается в какую то фигню

результат одинаковый и в винде и в ubuntu

Отредактировано snake_eater (Ноя. 8, 2015 14:21:04)

Офлайн

#7 Ноя. 8, 2015 14:43:50

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

snake_eater
так что нужно сделать с re_title.search(s).group(1) ?
Ничего не надо делать (надо указать кодировку файла при открытии)
snake_eater
а текст полученый с web-страницы превращается в какую то фигню
Так вы батенька сами эту фигню со страницы и вырезали. Не мастер в этом деле, но думаю вам помогут парсеры html ну например lxml.



Офлайн

#8 Ноя. 8, 2015 19:01:27

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

doza_and
Так вы батенька сами эту фигню со страницы и вырезали

файл python в utf-8
html страница в utf-8

что не так?

Офлайн

#9 Ноя. 8, 2015 19:37:23

snake_eater
Зарегистрирован: 2015-03-30
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

разобрался - нужно указывать кодировку

s1 = str(content, encoding="utf-8")
logging.info("Заголовок: " + re_title.search(s1).group(1))
или
s2 = content.decode("utf-8")
logging.info("Заголовок: " + re_title.search(s2).group(1))
	


тогда все ок


Офлайн

#10 Ноя. 8, 2015 21:45:51

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?

snake_eater
тогда все ок
Отличною Рад за вас. Но кодировку лучше брать из html заголовка а не задавать ручками.



Офлайн

  • Начало
  • » Python для новичков
  • » python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version