2011-12-01 32 views
2

我將一個鬍鬚文件解析爲字符串,之後我想用csv模塊處理該字符串。爲此,我使用StringIO生成一個類似於字符串接口的文件。 csv模塊與抱怨:StringIO和pystache生成虛空字節

_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對象被插入空字節。不出所料

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 

還有什麼問題,如果我使用的尚未與pystache預先處理字符串不會出現這種情況?

回答

1

txt = "Hello Steve"是一個字節串,預處理過的字符串可以是一個unicode字符串嗎?

+0

確實如此。我如何使用StringIO模塊?或者,如果這是不可能的,我怎麼能將它轉換成正常的字節串? – dangonfast

+0

我解決了它。 '.encode'('utf-8')'添加到'pystache.render('Hello {{name}}',{'name':'Steve'})'' – dangonfast