Python SymPy和#x27;s Sympify函数返回字符串,而不是SymPy对象
我有一个Excel文件,有两列;第一个包含我的变量名,第二个包含键入为字符串的数学表达式。我使用Python2.7.12和OpenPyxl2.3.2导入这些数据。默认情况下,字符串作为unicode导入 我想从导入的字符串创建一个Symphy对象,以便对其执行一些操作。但是,在本例中,对导入的字符串进行sympify将返回一个字符串对象,而不是SymPy对象。为什么会这样 如果我改为将字符串硬编码到.py文件中,我将获得预期的行为(sympify返回SymPy对象) 该代码说明:Python SymPy和#x27;s Sympify函数返回字符串,而不是SymPy对象,python,excel,sympy,openpyxl,Python,Excel,Sympy,Openpyxl,我有一个Excel文件,有两列;第一个包含我的变量名,第二个包含键入为字符串的数学表达式。我使用Python2.7.12和OpenPyxl2.3.2导入这些数据。默认情况下,字符串作为unicode导入 我想从导入的字符串创建一个Symphy对象,以便对其执行一些操作。但是,在本例中,对导入的字符串进行sympify将返回一个字符串对象,而不是SymPy对象。为什么会这样 如果我改为将字符串硬编码到.py文件中,我将获得预期的行为(sympify返回SymPy对象) 该代码说明: from sy
from sympy import *
import openpyxl
imported_data = openpyxl.load_workbook('sample_workbook.xlsx')
data = imported_data.get_sheet_by_name('sheet1')
variable_name = data['A1'].value
variable_value = data['B1'].value
globals()[variable_name] = variable_value
x = symbols('x')
print(type(variable1)) # This is a unicode string
sympy_expr = sympify(variable1)
print(type(sympy_expr)) # This should now be a SymPy object, but it's now of type str
globals的奇怪用法是什么?只需使用变量_值。不管怎样,看起来你的问题是这个方程是一个带引号的字符串。从中删除引号转换工作正常。删除引号确实会导致sympify转换为SymPy对象-谢谢。我使用globals()在导入多个变量时分配它们。在我的全部问题中,我不是从工作簿中导入一个变量,而是导入许多变量。我想将每个变量(来自工作簿第1列)分配给它的值(来自工作簿第2列)。然后,我希望能够仅使用该变量的名称来调用该变量,并避免每次需要时都需要使用dictionary[key]的繁琐语法来调用相应的值。dictionary语法并不特别复杂,但不管怎样。您确实应该使用某种容器对象来避免填充
全局对象时可能产生的任何副作用。不幸的是,当它嵌入到一些长数学表达式中时,会增加不必要的复杂性。我将研究其他容器选项。再次感谢。globals的奇怪用法是什么?只需使用变量_值。不管怎样,看起来你的问题是这个方程是一个带引号的字符串。从中删除引号转换工作正常。删除引号确实会导致sympify转换为SymPy对象-谢谢。我使用globals()在导入多个变量时分配它们。在我的全部问题中,我不是从工作簿中导入一个变量,而是导入许多变量。我想将每个变量(来自工作簿第1列)分配给它的值(来自工作簿第2列)。然后,我希望能够仅使用该变量的名称来调用该变量,并避免每次需要时都需要使用dictionary[key]的繁琐语法来调用相应的值。dictionary语法并不特别复杂,但不管怎样。您确实应该使用某种容器对象来避免填充全局对象时可能产生的任何副作用。不幸的是,当它嵌入到一些长数学表达式中时,会增加不必要的复杂性。我将研究其他容器选项。再次感谢。