Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2009 05:51:58

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

Есть вот такой пример:

z = [u'\xe1\xe0\xed\xfc\xea\xee']
print z[0]
print z
Проблема в том, что при выводе z я получаю каракули вместо ‘\xe1\xe0\xed\xfc\xea\xee’, как получить строку = ‘\xe1\xe0\xed\xfc\xea\xee’?



Офлайн

#2 Янв. 28, 2009 08:54:25

timas
От:
Зарегистрирован: 2008-08-28
Сообщения: 60
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

print repr(z)
Или не то?



Отредактировано (Янв. 28, 2009 08:54:57)

Офлайн

#3 Янв. 28, 2009 09:20:36

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Перевод списка в строку

Куда ты пытаешься вывести эту строку??????
ВОТ прочитай, и подумай почему не получается :)



Офлайн

#4 Янв. 28, 2009 15:47:54

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

>> Куда ты пытаешься вывести эту строку??????
В консоль, в GUI PyQt4, создать папку с такими именем. Вроде все.
Сейчас почитаем :)

>> print repr(z)
>> Или не то?
Попробовал,

print unicode(repr(z) , ‘cp1251’)

Ничего не выдает, вобщем-то мне текст нужен, но я с этими кодировками как “99,99999% питон-программистов” - мало что понимаю



Отредактировано (Янв. 28, 2009 15:53:51)

Офлайн

#5 Янв. 28, 2009 16:49:04

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Перевод списка в строку

1. Буковку u убери, так как это не юникодная строка, а cp1251
2. Крокозябы? а ты подумай, какую кодировку ждет то, куда ты это выводишь
3. Если тебе нужно преобразовать в utf-8 (вроде как для qt ), то так и сделай

z[0].decode('cp1251').encode('utf-8')
4.
Sergey912
Ничего не выдает, вобщем-то мне текст нужен, но я с этими кодировками как “99,99999% питон-программистов” - мало что понимаю
Откуда такие данные?

Добавлено:
В консоль выводи соответственно в кодировке cp866



Отредактировано (Янв. 28, 2009 17:15:02)

Офлайн

#6 Янв. 28, 2009 18:24:37

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

>> В консоль выводи соответственно в кодировке cp866
Вывод в консоль:
z =
print unicode(repr(z) , ‘cp866’)
>>> “'”

Вот такой код:

z = [u'\xe1\xe0\xed\xfc\xea\xee']
z = repr(z[0])
print z
z = z.replace('u','')
print z
x = z[0].decode('cp1251').encode('utf-8')
print x
Выводит:
>>> u'\xe1\xe0\xed\xfc\xea\xee'
>>> ‘\xe1\xe0\xed\xfc\xea\xee’
>>> ‘

Если добавляю это в Gui (ячейка таблицы) - туда попадет ’
Папака создается с именем ‘
Хотя бы GUI должен был получить то что нужно вроде, но везде остается только ’

Если так:
z = [u'\xe1\xe0\xed\xfc\xea\xee']
z = repr(z[0])
print z
z = z.replace('u','')
z = z.replace('\'','')
print z
x = z[0].decode('cp1251').encode('utf-8')
print x
Получаю
>>> u'\xe1\xe0\xed\xfc\xea\xee'
>>> \xe1\xe0\xed\xfc\xea\xee
>>> \



Отредактировано (Янв. 28, 2009 18:28:57)

Офлайн

#7 Янв. 28, 2009 18:33:49

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Перевод списка в строку

что тут скажешь…. пробовал какой нибудь учебник по питону читать?
слов нет…….. знаешь разницу между s='text' и s=u'text'?
Ты в строке видишь ковычки или СИМВОЛ u?! Так зачем же их реплейсить
И repr зачем?

z = ['\xe1\xe0\xed\xfc\xea\xee']
print z[0].decode('cp1251').encode('cp866')



Отредактировано (Янв. 28, 2009 18:39:08)

Офлайн

#8 Янв. 28, 2009 18:44:26

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

z =
print z.decode('cp1251').encode('cp866')

Ў ­мЄ®

и что?



Офлайн

#9 Янв. 28, 2009 18:54:06

igor.kaist
От:
Зарегистрирован: 2007-11-12
Сообщения: 1879
Репутация: +  3  -
Профиль   Отправить e-mail  

Перевод списка в строку

Sergey912
и что?
Куда ты это выводишь? cp866 для консоли windows

Сейчас догадаюсь… Под консолью ты подрузумеваешь наверное idle, которая ЮНИКОДНАЯ консоль! Поэтому строки печатать ей нужно в юникоде



Отредактировано (Янв. 28, 2009 18:58:03)

Офлайн

#10 Янв. 28, 2009 19:04:01

Sergey912
От:
Зарегистрирован: 2009-01-19
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Перевод списка в строку

>> Под консолью ты подрузумеваешь наверное idle
А у нее уже не консоль?
Приложение GUI, зачем мне консоль нужна?

>>> Так зачем же их реплейсить
Есть другие варианты как ее убрать? Или я сам по твоему в исходниках такие списки заполняю?



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version