Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 24, 2010 00:11:55

wade
От:
Зарегистрирован: 2010-01-24
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка в IDLE

Добрый день.

У меня такой вопрос.

Я в IDLE получаю какой-нибудь html документ в кодировке utf-8 (через Urllib), пишу его в переменную h. Переменная - обычный STR, хотя содержимое - в кодировке utf 8.

Потом я назначаю другую переменную присваиванием: s = ‘фрагмент текста’, ввожу текст на русском.

Проверяю s in h, получаю false.

В IDLE выставлена кодировка UTF-8.

1) Можно ли делать проверку наличия подстроки описанным мною способом?
2) Если нет, то как можно иным способом искать подстроки в кодировке UTF-8 работая с Python в интерактивном режиме.

Спасибо.



Офлайн

#2 Янв. 27, 2010 17:20:36

diam123
От:
Зарегистрирован: 2008-10-23
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка в IDLE

#!/usr/bin/env python
#-*-encoding:UTF-8-*-

import urllib
html = urllib.urlopen("http://google.com").read().decode("UTF-8")
need_to_find = u"Вася Пупкин"
if need_to_find in html:
print 1
else:
print 0



Офлайн

#3 Фев. 25, 2010 00:11:18

quill_driver
От:
Зарегистрирован: 2010-02-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка в IDLE

Нужно, чтобы в IDLE результаты выполнения команд отображались кириллицей, а не кодами символов. Подскажите, пожалуйста, что я делаю неправильно:

#!/usr/bin/env python
# -*- coding: cp1251 -*-
s = "Текст"
print s[0], s[-1]
Т т
s = "Это пример текста"
lst = s.split(" ")
print lst
['\xd6\xe5', '\xef\xf0\xe8\xea\xeb\xe0\xe4', '\xf3\xea\xf0\xe0\xbf\xed\xf1\xfc\xea\xee\xe3\xee', '\xf2\xe5\xea\xf1\xf2\xf3']
import codecs
print lst.encode('windows-1251')

Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
print lst.encode('windows-1251')
AttributeError: 'list' object has no attribute 'encode'
Windows XP, стандартная русская локализация, версия Python и IDLE - 2.6.4.
Заранее спасибо за ответ.



Офлайн

#4 Фев. 25, 2010 02:53:44

Nik
От:
Зарегистрирован: 2010-01-10
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка в IDLE

Используйте цикл для перебора списка и оператор print для вывода:

>>> s = "Это пример текста"
>>> lst = s.split(" ")
>>> for i in lst: print i

Это
пример
текста
>>> "Текст"
'\xd2\xe5\xea\xf1\xf2'
>>> print "Текст"
Текст
В противном случае вызывается метод __repr__(), а не __str__(). В результате русские буквы будут представлены кодами символов.
quill_driver
#!/usr/bin/env python
Эта строка в Windows XP не нужна…



Отредактировано (Фев. 25, 2010 02:57:47)

Офлайн

#5 Фев. 25, 2010 13:45:13

bazooka
От:
Зарегистрирован: 2009-04-12
Сообщения: 165
Репутация: +  0  -
Профиль   Отправить e-mail  

Кодировка в IDLE

но и не мешает



Офлайн

#6 Фев. 25, 2010 15:27:47

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

Кодировка в IDLE

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

s = "Это пример текста"
lst = s.split(" ")
print lst
выводит
['Це', 'приклад', 'українського', тексту']



Офлайн

#7 Фев. 26, 2010 03:40:12

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

Кодировка в IDLE

Nik
Используйте цикл для перебора списка и оператор print для вывода:
>>> s = "Это пример текста"
>>> lst = s.split(" ")
>>> for i in lst: print i
Это
пример
текста
совершенно неожиданно наткнулся на более “красивый” способ:
s = "Это пример текста"
lst = s.split(" ")
print(", ".join(unicode(x) for x in lst))
Это, пример, текста



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version