StringIO и pystache генерируют ложные нулевые байты - PullRequest
2 голосов
/ 01 декабря 2011

Я разбираю файл усов в строку, и после этого я хочу обработать эту строку с помощью модуля csv. Для этого я создаю файл, подобный интерфейсу строки, используя StringIO. Модуль CSV жалуется с:

_csv.Error: line contains NULL byte

Итак, я сделал простой тест:

import pystache
from cStringIO import StringIO

txt = pystache.render('Hello {{name}}', {'name' : 'Steve'})
f = StringIO(txt)
data = f.read()
print txt.find('\x00')
print data.find('\x00')
print txt.count('\x00')
print data.count('\x00')

Который производит:

-1
1
0
33

Каким-то образом объект StringIO вставляет пустые байты. Этого не происходит, если я использую строку, которая не была предварительно обработана с помощью pystache:

from cStringIO import StringIO

txt = "Hello Steve"
f = StringIO(txt)
data = f.read()
print txt.find('\x00')
print data.find('\x00')
print txt.count('\x00')
print data.count('\x00')

Результат, как и ожидалось:

-1
-1
0
0

В чем может быть проблема?

1 Ответ

1 голос
/ 01 декабря 2011

txt = "Hello Steve" - строка байтов, может ли предварительно обработанная строка быть строкой Unicode?

...