Python: Как заставить StringIO.writelines принимать строку unicode?

Можно также попытаться использовать Мышь. Свойство DirectlyOver для получения самого верхнего элемента, который находится под мышью.

24
задан rutherford 30 November 2009 в 03:29
поделиться

2 ответа

StringIO documentation:

Unlike the memory files implemented by the StringIO module, those provided by [cStringIO] are not able to accept Unicode strings that cannot be encoded as plain ASCII strings.

If possible, use StringIO instead of cStringIO.

22
ответ дан 28 November 2019 в 22:41
поделиться

Вы можете обернуть объект StringIO в объект codecs.StreamReaderWriter для автоматического кодирования и декодирования Unicode.

Вот так:

import cStringIO, codecs
buffer = cStringIO.StringIO()
codecinfo = codecs.lookup("utf8")
wrapper = codecs.StreamReaderWriter(buffer, 
        codecinfo.streamreader, codecinfo.streamwriter)

wrapper.writelines([u"list of", u"unicode strings"])

буфер будет заполнены байтами в кодировке utf-8.

Если я правильно понимаю ваш случай, вам нужно будет только написать, так что вы также можете сделать:

import cStringIO, codecs
buffer = cStringIO.StringIO()
wrapper = codecs.getwriter("utf8")(buffer)
38
ответ дан 28 November 2019 в 22:41
поделиться
Другие вопросы по тегам:

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