将Mathematica表达式无损地转换为字符串(保留在内存中的字符串,不会导出到文件中)的正确方法是什么?
我正在寻找一种文字表示形式
SparseArray
,Graph
,Dispatch
,CompiledFunction
等。例如。通过此表示形式循环SparseArray
应当使其保持稀疏状态(而不是将其转换为普通列表)。 ToString[expr, FullForm]
是否足以满足要求?那ToString[expr, InputForm]
呢?注意1:这是在尝试解决
Graph
中的一些错误(内部表示偶尔会损坏)时出现的。但我对上述一般问题的答案感兴趣。注意2:
Save
肯定会执行此操作,但是它会写入文件(可能可以使用流来解决此问题),并且仅写入与符号关联的定义。 最佳答案
如果您不打算对结果字符串执行某些字符串操作,则可以考虑使用Compress
和Uncompress
替代ToString
。虽然我不知道ToString[expr,InputForm]
-ToExpression
循环会中断的情况,但我可以轻易地想象它们存在。 Compress
解决方案似乎更健壮,因为可以保证对Uncompress
编码的字符串调用的Compress
可以重建原始表达式。 Compress
的另一个优点是它的内存效率很高-我多次使用它来将大量数字数据保存在笔记本中,而没有将它们保存到磁盘中。
关于wolfram-mathematica - 以文本形式保存Mathematica表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5964341/