2015-03-29 11 views
5

tôi có mã này:Lỗi Loại: phải chuỗi, không Unicode

... 
msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer} 
msg = cPickle.dumps(msgdict) 
print msg 

Các in msg tôi có được điều này:

(dp1 
S'mapper' 
p2 
(S's3n://myFolder/mapper.py' 
p3 
tp4 
sS'datafile' 
p5 
(S's3n://myFolder/test.txt' 
p6 
tp7 
sS'reducer' 
p8 
(S's3n://myFolder/reducer.py' 
p9 
tp10 
s. 

Sau đó, Im cố gắng để có được nội dung của tôi:

for i in range(count): 
    m = q[0].read() 
    # this print returns a object Message 
    print m 
    # m.get_body()) returns the same of print msg above 
    msg = cPickle.loads(m.get_body()) 

Nhưng tôi gặp lỗi này:

msg = cPickle.loads(m.get_body())  
TypeError: must be string, not unicode 

Ai đó biết cách giải quyết lỗi này?

+0

Bạn đã thử 'repr()' tất cả các chuỗi? –

+0

'm',' q' hoặc 'get_body' là gì? – Daniel

Trả lời

7

Cố gắng thay thế dòng đó như sau:

msg = cPickle.loads(str(m.get_body())) 

By đúc str()-m.get_body(), nó làm cho chắc chắn rằng nếu chuỗi là unicode, nó chuyển đổi nó thành một chuỗi.

+0

Cảm ơn bạn, giải pháp của bạn đã hoạt động! – UserX

+0

@UserX không có vấn đề :) –

Các vấn đề liên quan