2016-06-12 3 views
0

Я добавляю родовое GDB довольно принтер, как описано here к моему БГДУ, следующая строка добавляет карту типов использовать принтер:питона словарь: unorderable типов ошибки

pretty_printers_dict[re.compile ('.*Generic.*')] = GenericPrinter 

Мне нужно, чтобы адаптировать его к моим типам:

pretty_printers_dict[re.compile ('MyNamespace1.*')] = GenericPrinter 
pretty_printers_dict[re.compile ('MyNamespace2.*')] = GenericPrinter 

В основном я люблю использовать принтер для всех моих типов.

Но я получаю следующее сообщение об ошибке в GDB:

Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 
Python Exception <class 'TypeError'> unorderable types: _sre.SRE_Pattern() < _sre.SRE_Pattern(): 

Если удалить либо строку, он отлично работает. Я озадачен,

Вы видите, что это проблема и как ее исправить?

[UPDATE] я получаю от него путем объединения регулярных выражений:

pretty_printers_dict[re.compile ('MyNamespace1.*|MyNamespace2.*')] = GenericPrinter 
+0

Могли бы вы предоставить более кода, потому что это не имеет смысла. Это должно работать и работает на моей машине! –

+0

@my_question, если у вас есть рабочее решение, вы должны добавить его в качестве ответа и принять его. –

ответ

0

я получаю от него путем объединения регулярных выражений:

pretty_printers_dict[re.compile ('MyNamespace1.*|MyNamespace2.*')] = GenericPrinter 
0

Эта проблема возникает только в Python 3:

sorted функция должна сравнить два скомпилированных регулярных выражений который работает только на python 2 (я не знаю почему).

Но я не думаю, что sorted вызов надо так просто оставить его:

for function in pretty_printers_dict: 
    if function.match(typename): 
     return pretty_printers_dict[function](val) 
Смежные вопросы