Как я включаю строки unicode в Python doctests?

Это зависит немного от Ваших потребностей. Некоторые инструментарии лучше в рисунке, другие лучше для записи текста. Каир имеет довольно хорошее для рисования (это поддерживает широкий спектр экрана и типов файлов, включая PDF), но это не может быть идеально для хорошего книгопечатания.

19
задан saffsd 14 November 2009 в 05:51
поделиться

3 ответа

Если вам нужны строки Unicode, вы должны использовать строки документов unicode! Обратите внимание на u !

# -*- coding: utf-8 -*-
def mylen(word):
  u"""        <----- SEE 'u' HERE
  >>> mylen(u"áéíóú")
  5
  """
  return len(word)

print mylen(u"áéíóú")

Это будет работать, пока проходят тесты. Для Python 2.x вам понадобится еще один прием, чтобы заставить работать подробный режим проверки документации или получать правильные трассировки, когда тесты терпят неудачу:

if __name__ == "__main__":
    import sys
    reload(sys)
    sys.setdefaultencoding("UTF-8")
    import doctest
    doctest.testmod()

NB! Всегда используйте setdefaultencoding только для целей отладки. Я бы принял его для использования в документации, но нигде в вашем производственном коде.

20
ответ дан 30 November 2019 в 04:07
поделиться

Это известная и пока не решенная проблема в Python. См. Открытые вопросы здесь и здесь .

Неудивительно, что его можно изменить, чтобы он работал нормально в Python 3, поскольку там все строки являются Unicode:

def mylen(word):
  """
  >>> mylen("áéíóú")
  5
  """
  return len(word)

print(mylen("áéíóú"))
2
ответ дан 30 November 2019 в 04:07
поделиться

Мое решение заключалось в том, чтобы избежать символов Юникода, например u '\ xe1 \ xe9 \ xed \ xf3 \ xfa'. Было не так легко читать, но в моих тестах было только несколько символов, отличных от ASCII, поэтому в этих случаях я помещал описание в сторону в виде комментария, например «# n с тильдой».

1
ответ дан 30 November 2019 в 04:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: