StringIO和pystache生成虚假的空字节

时间:2011-12-01 10:02:43

标签: python mustache

我正在将胡子文件解析为字符串,之后我想用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对象以某种方式插入NULL字节。如果我使用未经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 个答案:

答案 0 :(得分:1)

txt = "Hello Steve"是一个字节字符串,预处理字符串可以是unicode字符串吗?