Форум сайта python.su
для отображения двумерного массива использую repr(), элементы вложенных массивов отображаются в одинарных кавычках:
[,,,]можно ли выводить в двойных кавычках?
Офлайн
а зачем тебе в двойных ? каковы причины того что одинарные не устраивают ?
Офлайн
repr(massive).replace(“'”, ‘"’)
Офлайн
evgenyl, нужны двойные, потому что парсер работает именно с двойными.
poltergeist, не пойдёт. в строках могут так же встречаться кавычки,
а в памяти компа происходит дублирование строки.
видел, что можно сменить строку приглашения через переменную в модуле sys.
вопрос, - есть ли такое решение для repr (или str)
т.е. чтобы просто указать параметр, какие кавычки использовать
Отредактировано (Авг. 25, 2008 17:02:30)
Офлайн
ты же понимаеш что repr может тебе и не одинарными написать а двойными, если внутри текста будут одинарные кавычки
Офлайн
axeподивись в сорсах пітона Python-2.5.2/Objects/stringobject.c
видел, что можно сменить строку приглашения через переменную в модуле sys.
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)
Офлайн
перекомпилить интерпретатор, тоже мне проблема, или реализовать свои массивы
Офлайн
>>> class MyStr(str):
... def __repr__(self):
... return '"%s"' % self
...
>>> repr([[MyStr('one')],[MyStr('two')],[MyStr('three')],[MyStr('four')]])
'[["one"], ["two"], ["three"], ["four"]]'
Офлайн
>>> 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'
>>>
Офлайн
так и недолжно работать. хорошо хоть отнаследоваться можно. можно отнаследоваться и заменить просто str локально. на самом деле не очень хорошая практика, но если надо - то все можно.
Офлайн