2009-09-11 62 views
0

我需要反序列化一个字符串到Python中的数组,就像PHP一样,然后将其序列化回来。python序列化字符串

+0

这是我的故事吗? 文件“serv.py”,第8行,在? zin_arr = pickle.loads(ZIN) 文件 “/usr/lib/python2.4/pickle.py”,线1393,在负荷 文件= StringIO的(STR) 类型错误:预期用读缓冲器,元组找到 – David 2009-09-12 00:10:15

+0

@大卫这意味着你的“zin”是一个元组,而不是一个字符串。你应该检查看看实际上是什么“zin”。 – Unknown 2009-09-12 02:10:23

+0

啊,好的谢谢。我会尝试 – David 2009-09-12 02:43:27

回答

0

看看pickle module。这可能是你要找的。

import pickle 

# Unserialize the string to an array 
my_array = pickle.loads(serialized_data) 

# Serialized back 
serialized_data = pickle.dumps(my_array) 
+0

我不认为他的意思是序列化字序列化... – Kieveli 2009-09-12 01:18:05

+1

嗯也许他做了...没有足够的细节知道! – Kieveli 2009-09-12 01:19:08

0

什么“序列化”有问题的数据到字符串中的第一个地方?你真的是指一个array(如果是这样,什么简单类型?),或者你的意思是一个list(如果是这样,列表的项目应该是什么?)等等等等......

从OP的评论看来,他看起来像他有zintuple,并试图对待它,而不是数据被酸洗序列化为str。所以他试图通过pickle.loads反序列化元组,并且显然不能工作 - pickle.loads想要一个str(这就是s MEANS),不是一个元组 - 它不能使用元组,它甚至不知道用元组做什么。

当然,我们也没有给出关于元组来自哪里的零指示,为什么它应该是一个字符串等等.OP应该编辑他的答案以显示更多的代码(如何zin采购或提取),特别是代码zin应该是生产(通过pickle.dumps,我想象)以及如何从生产者到这个潜在消费者的沟通(或未能发生;-)。

0

一个字符串在Python中已经是一个序列类型。你可以像这样一次遍历字符串中的一个字符:

for char in somestring: 
    do_something(char) 

问题是......你想用它做什么?也许我们可以提供更详细的问题和更详细的问题。

1

如果你的意思是PHP的爆炸,试试这个

>>> list("foobar") 
['f', 'o', 'o', 'b', 'a', 'r'] 

>>> ''.join(['f', 'o', 'o', 'b', 'a', 'r']) 
'foobar'