晚上好,我有这种类型的python对象。有没有办法将它转换为字符串,编辑和转换回来?
<class 'matplotlib.transforms.CompositeGenericTransform'>
当我通过print(变量)打印时,它看起来像这样:
CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(CompositeGenericTransform(TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())), CompositeGenericTransform(BboxTransformFrom(TransformedBbox(Bbox('array([[ -19.5 , -10.7983871],\n [ 221.5 , 140.7983871]])'), TransformWrapper(BlendedAffine2D(IdentityTransform(),IdentityTransform())))), BboxTransformTo(TransformedBbox(Bbox('array([[ 0.125, 0.25 ],\n [ 0.9 , 0.9 ]])'), BboxTransformTo(TransformedBbox(Bbox('array([[ 0., 0.],\n [ 8., 6.]])'), Affine2D(array([[ 80., 0., 0.],
[ 0., 80., 0.],
[ 0., 0., 1.]])))))))), Affine2D(array([[ 0.99968918, -0.02493069, 6.98903935],
[ 0.02493069, 0.99968918, -8.59039721],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.93499095],
[ 0.02493069, 0.99968918, -7.14592338],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.88226449],
[ 0.02493069, 0.99968918, -6.30113809],
[ 0. , 0. , 1. ]]))), Affine2D(array([[ 0.99968918, -0.02493069, 6.96735103],
[ 0.02493069, 0.99968918, -7.27368166],
[ 0. , 0. , 1. ]])))
答案 0 :(得分:2)
您可以使用Pickle执行此操作,它是Python的对象序列化库。
答案 1 :(得分:1)
一般来说,这是不可行的。大多数对象无法通过str
表示来构造。*(某些对象可以从他们的repr
构建,但您不应该依赖它。)
在特定情况下,您当然可以为类型str
编写特定的解析器。
但这几乎总是一个坏主意。相反,选择一种交换格式,然后编写代码将您的对象转换为该交换格式并返回。许多对象(特别是在NumPy系列中)已经知道如何使用各种文本格式(如CSV或JSON)将自己呈现为/构建自己,因此调用astext
和{ {1}}或fromtext
和tojson
或其他。
*甚至不能用fromjson
表示来构造字符串;它真的只有数字和基本的集合。
答案 2 :(得分:1)
你可以使用带有转储和装载的泡菜,但它可能很脆弱。不建议。
import pickle
x = {'a':1,'b':2}
out = pickle.dumps(x)
out = out.replace("I1","I66")
x2 = pickle.loads(out)
print x2 # {'a': 66, 'b': 2}