Найти - Пользователи
Полная версия: repr() отображать в двойных кавычках
Начало » Python для экспертов » repr() отображать в двойных кавычках
1 2
axe
для отображения двумерного массива использую repr(), элементы вложенных массивов отображаются в одинарных кавычках:
[,,,]
можно ли выводить в двойных кавычках?

думаю, что преобразовывать строку - очень плохое решение
evgenyl
а зачем тебе в двойных ? каковы причины того что одинарные не устраивают ?
poltergeist
repr(massive).replace(“'”, ‘"’)
axe
evgenyl, нужны двойные, потому что парсер работает именно с двойными.

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

видел, что можно сменить строку приглашения через переменную в модуле sys.
вопрос, - есть ли такое решение для repr (или str)
т.е. чтобы просто указать параметр, какие кавычки использовать
evgenyl
ты же понимаеш что repr может тебе и не одинарными написать а двойными, если внутри текста будут одинарные кавычки
crchemist
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
перекомпилить интерпретатор, тоже мне проблема, или реализовать свои массивы
crchemist
>>> class MyStr(str):
... def __repr__(self):
... return '"%s"' % self
...
>>> repr([[MyStr('one')],[MyStr('two')],[MyStr('three')],[MyStr('four')]])
'[["one"], ["two"], ["three"], ["four"]]'
crchemist
>>> 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
так и недолжно работать. хорошо хоть отнаследоваться можно. можно отнаследоваться и заменить просто str локально. на самом деле не очень хорошая практика, но если надо - то все можно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB