axe
Авг. 25, 2008 13:50:22
для отображения двумерного массива использую repr(), элементы вложенных массивов отображаются в одинарных кавычках:
[,,,]
можно ли выводить в двойных кавычках?
думаю, что преобразовывать строку - очень плохое решение
evgenyl
Авг. 25, 2008 14:43:24
а зачем тебе в двойных ? каковы причины того что одинарные не устраивают ?
poltergeist
Авг. 25, 2008 15:22:44
repr(massive).replace(“'”, ‘"’)
axe
Авг. 25, 2008 17:00:55
evgenyl, нужны двойные, потому что парсер работает именно с двойными.
poltergeist, не пойдёт. в строках могут так же встречаться кавычки,
а в памяти компа происходит дублирование строки.
видел, что можно сменить строку приглашения через переменную в модуле sys.
вопрос, - есть ли такое решение для repr (или str)
т.е. чтобы просто указать параметр, какие кавычки использовать
evgenyl
Авг. 25, 2008 17:07:43
ты же понимаеш что repr может тебе и не одинарными написать а двойными, если внутри текста будут одинарные кавычки
crchemist
Авг. 25, 2008 17:30:21
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 = '"';
...
}
вибір “\'” є зашитим і нічо тут не зробиш
cybergrind
Авг. 25, 2008 18:32:31
перекомпилить интерпретатор, тоже мне проблема, или реализовать свои массивы
crchemist
Авг. 25, 2008 18:44:28
>>> class MyStr(str):
... def __repr__(self):
... return '"%s"' % self
...
>>> repr([[MyStr('one')],[MyStr('two')],[MyStr('three')],[MyStr('four')]])
'[["one"], ["two"], ["three"], ["four"]]'
crchemist
Авг. 25, 2008 18:54:12
>>> 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'
>>>
так не працює (((
cybergrind
Авг. 26, 2008 11:37:51
так и недолжно работать. хорошо хоть отнаследоваться можно. можно отнаследоваться и заменить просто str локально. на самом деле не очень хорошая практика, но если надо - то все можно.