Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 25, 2008 13:50:22

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

repr() отображать в двойных кавычках

для отображения двумерного массива использую repr(), элементы вложенных массивов отображаются в одинарных кавычках:

[,,,]
можно ли выводить в двойных кавычках?

думаю, что преобразовывать строку - очень плохое решение



Офлайн

#2 Авг. 25, 2008 14:43:24

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

а зачем тебе в двойных ? каковы причины того что одинарные не устраивают ?



Офлайн

#3 Авг. 25, 2008 15:22:44

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

repr(massive).replace(“'”, ‘"’)



Офлайн

#4 Авг. 25, 2008 17:00:55

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

repr() отображать в двойных кавычках

evgenyl, нужны двойные, потому что парсер работает именно с двойными.

poltergeist, не пойдёт. в строках могут так же встречаться кавычки,
а в памяти компа происходит дублирование строки.

видел, что можно сменить строку приглашения через переменную в модуле sys.
вопрос, - есть ли такое решение для repr (или str)
т.е. чтобы просто указать параметр, какие кавычки использовать



Отредактировано (Авг. 25, 2008 17:02:30)

Офлайн

#5 Авг. 25, 2008 17:07:43

evgenyl
От:
Зарегистрирован: 2008-07-22
Сообщения: 148
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

ты же понимаеш что repr может тебе и не одинарными написать а двойными, если внутри текста будут одинарные кавычки



Офлайн

#6 Авг. 25, 2008 17:30:21

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

axe
видел, что можно сменить строку приглашения через переменную в модуле sys.
подивись в сорсах пітона Python-2.5.2/Objects/stringobject.c
string_repr, /* tp_repr */
static PyObject *
string_repr(PyObject *op)
{
return PyString_Repr(op, 1);
}
PyObject *
PyString_Repr(PyObject *obj, int smartquotes)
{
...
/* figure out which quote to use; single is preferred */
quote = '\'';
if (smartquotes &&
memchr(op->ob_sval, '\'', op->ob_size) &&
!memchr(op->ob_sval, '"', op->ob_size))
quote = '"';
...
}
вибір “\'” є зашитим і нічо тут не зробиш



Отредактировано (Авг. 25, 2008 18:49:55)

Офлайн

#7 Авг. 25, 2008 18:32:31

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

перекомпилить интерпретатор, тоже мне проблема, или реализовать свои массивы



Офлайн

#8 Авг. 25, 2008 18:44:28

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

>>> class MyStr(str):
... def __repr__(self):
... return '"%s"' % self
...
>>> repr([[MyStr('one')],[MyStr('two')],[MyStr('three')],[MyStr('four')]])
'[["one"], ["two"], ["three"], ["four"]]'



Офлайн

#9 Авг. 25, 2008 18:54:12

crchemist
От:
Зарегистрирован: 2008-07-09
Сообщения: 379
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

>>> str.__repr__ = lambda x: '"%s"' % x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can't set attributes of built-in/extension type 'str'
>>>
так не працює (((



Офлайн

#10 Авг. 26, 2008 11:37:51

cybergrind
От:
Зарегистрирован: 2008-01-21
Сообщения: 201
Репутация: +  0  -
Профиль   Отправить e-mail  

repr() отображать в двойных кавычках

так и недолжно работать. хорошо хоть отнаследоваться можно. можно отнаследоваться и заменить просто str локально. на самом деле не очень хорошая практика, но если надо - то все можно.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version