Найти - Пользователи
Полная версия: python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?
Начало » Python для новичков » python 3 как вывести в консоль винды читаемый текст? или как нормально сконвертировать текст для записи в log?
1 2
snake_eater
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

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

Текст страницы в utf-8, это значит, что там могут быть символы, которые не могут быть закодированы в cp1251. Поэтому в винде нужно консоль настроить на utf-8.
snake_eater
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’
snake_eater
кстати та же фигня если просто записывать в файл
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
        
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
doza_and
snake_eater
так что нужно сделать с re_title.search(s).group(1) ?
Ничего не надо делать (надо указать кодировку файла при открытии)
snake_eater
а текст полученый с web-страницы превращается в какую то фигню
Так вы батенька сами эту фигню со страницы и вырезали. Не мастер в этом деле, но думаю вам помогут парсеры html ну например lxml.
snake_eater
doza_and
Так вы батенька сами эту фигню со страницы и вырезали

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

что не так?
snake_eater
разобрался - нужно указывать кодировку
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))
	


тогда все ок


doza_and
snake_eater
тогда все ок
Отличною Рад за вас. Но кодировку лучше брать из html заголовка а не задавать ручками.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB