Python TypeError:必须是字符串,而不是unicode
我有以下代码:Python TypeError:必须是字符串,而不是unicode,python,unicode,pickle,Python,Unicode,Pickle,我有以下代码: ... msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer} msg = cPickle.dumps(msgdict) print msg 我得到的打印消息如下: (dp1 S'mapper' p2 (S's3n://myFolder/mapper.py' p3 tp4 sS'datafile' p5 (S's3n://myFolder/test.txt' p6 tp7 sS'reduc
...
msgdict = {'datafile': datafile, 'mapper': mapper, 'reducer':reducer}
msg = cPickle.dumps(msgdict)
print msg
我得到的打印消息如下:
(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.
然后我尝试获取我的内容:
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())
但我有一个错误:
msg = cPickle.loads(m.get_body())
TypeError: must be string, not unicode
有人知道如何解决此错误吗?尝试用以下内容替换该行:
msg = cPickle.loads(str(m.get_body()))
通过将
str()
强制转换为m.get_body()
,它可以确保如果字符串是unicode,它会将其转换为字符串。您是否尝试过repr()
所有字符串?什么是m
、q
或get_body
?