Python - 将符号表达式(sympy)写入txt文件

问题描述 投票:0回答:3

将符号表达式写入txt文件的最佳方法是什么(以便我可以在读取txt文件后使用符号表达式)?

是否有 sympy 相当于 numpy 的 savetxt() 函数?

例如:

from sympy import Symbol
a=Symbol('a')
b=Symbol('b')

y=a+3*b

如何正确读写 y?

python save expression sympy
3个回答
12
投票
SymPy 中的

str(expr)
应该保存有关表达式的大部分信息。优点是它是人类可读的。从中加载的最佳方法是使用
sympify()
,而不是仅仅复制粘贴或
eval
,因为例如,
str(Rational(1, 2))
将给出
1/2
,它将直接计算为
0.5

还有一个函数

srepr()
(SymPy 的
repr
版本)可以提供更详细的输出。

需要注意的一件事是,两者都不会保存当前有关符号假设的信息(

Symbol('x', real=True)
),因此如果您需要的话,您应该使用 pickle 或 dill 之类的东西。


5
投票

您可以使用 pickle 库将其存储到文件中(因为您可以保存大多数 Python 对象):

import pickle
with open("y.txt", "w") as outf:
    pickle.dump(y, outf)

您稍后将加载它

with open("y.txt") as inf:
    y = pickle.load(inf)

0
投票

使用

pickle
,您可能会遇到类似的错误

TypeError: write() argument must be str, not bytes

我推荐基本的Python 3打印方法:

y=a+3*b # this is my linear form
f = open('out.txt', 'w')
print("equation = ", y, file=f)  
f.close()

我成功使用了它(也将 SymPy 输出提供给其他程序)

在一些更困难的情况下,您可能需要“wb”,用于以二进制模式写入

© www.soinside.com 2019 - 2024. All rights reserved.