Python:用不同的术语替换字符串中的嵌入函数
我有一大堆方程(来自Eviews),需要解析并转换成另一种语言。它们作为字符串导入,例如:Python:用不同的术语替换字符串中的嵌入函数,python,string,Python,String,我有一大堆方程(来自Eviews),需要解析并转换成另一种语言。它们作为字符串导入,例如: a = "series1=0.173*d(series1,0,1)+0.010*d(series2,0,2)" 我遇到的问题是替换方程中嵌入的eviews函数。我需要找到一种方法,将“d(series2,0,1)”Eviews函数转换为另一种语言可读的格式。具体来说, "d(series2,0,x)" --> "(series2 - series2(-x))" 理想情况下,我希望能够编写一个函数
a = "series1=0.173*d(series1,0,1)+0.010*d(series2,0,2)"
我遇到的问题是替换方程中嵌入的eviews函数。我需要找到一种方法,将“d(series2,0,1)”Eviews函数转换为另一种语言可读的格式。具体来说,
"d(series2,0,x)" --> "(series2 - series2(-x))"
理想情况下,我希望能够编写一个函数,它接受一个方程字符串(如上面的第一行),检测方程中是否有“d(series,0,x)”函数,然后根据上面的示例在方程中替换它。e、 g
a = "series1=0.173*d(series1,0,1)+0.010*d(series2,0,2)"
def function(a):
blah blah
function(a) --> "series1=0.173*(series1 - series1(-1))+0.010*(series2 - series2(-2))"
有人知道如何开始吗 我认为使用两个标准工具(正则表达式和字符串格式)可以轻松完成这项工作。但是,如果它比您的示例要复杂得多,那么通过正则表达式进行解析可能会变得难看,使用具有解析语言形式结构模型的系统可能会做得更好 首先,您需要
导入re
,然后创建一个与您要查找的函数字符串匹配的正则表达式,并将变量部分放入组中进行提取。对于您提到的案例,这里有一个简单的例子:
>>> regex = re.compile(r'd\((\w+),\d+,(\d+)\)')
>>> arg_sets = regex.findall(a)
>>> arg_sets
[('series1', '1'), ('series2', '2')]
python正则表达式的官方文档,下面是可以帮助您构建它们的文档(还有其他文档,这只是我在python模式下发现的第一个)
有了正则表达式后,就可以使用格式字符串中的结果来获得所需的输出,如
>>> format_string = "({first} - {first}(-{third}))"
>>> format_string.format( **dict(zip(['first', 'third'], arg_sets[0])))
'(series1 - series1(-1))'
你写了什么?我们不打算从scratchstart开始为您编写特定的解析器,因为这是解析的最后一部分。我不知道如何开始,并且认为其他人可能知道从哪里开始。感谢您推荐我从标记开始感谢,这非常有帮助。