0

说我有字符串testString = "x=4+y and y = 8"

我想运行findIndices(testString)并取回包含公式项的索引列表

即这应该返回[0,1,2,3,4,10,11,12,13,14]

我想这会奏效

find equalSigns
foreach equalSign
   look to the left until you see a space not preceded by an operator
        put current index in  formulalist
   look to the right until you see a space not preceded by an operator
        put current index in formulalist
   put the equalSign index in the formulalist

return formulalist

1)在python中有更有效的方法吗?它是什么?(正则表达式?)

2)如果这是有效的:我如何编写“向左看”和“向右看”子例程?

4

2 回答 2

2

我不确定你要做什么,但是

string.split("=")  
string.index("=")

例如:

In [1]: a= "y = 25*x  + 42*z"
In [2]: a.split("=")
Out[2]: ['y ', ' 25*x  + 42*z']
In [3]: a.index("=")
Out[3]: 2

可能对你有用。

于 2013-03-04T22:19:09.370 回答
2

正如 gnibbler 的评论所说,在你考虑解析它之前写下语法。也就是说,如果“公式”是其中没有空格且至少有一个等号的字符串,则以下函数将从字符串中返回公式列表:

def formulas(s):
   return filter(lambda x: '=' in x, s.split())

例如:
formulas('x=4+y and y=8')产生['x=4+y', 'y=8']
formulas("x=4+y and y = 8")产生['x=4+y', '='] formulas('x=4+y and y=8 etc z=47+38*x + y')产生['x=4+y', 'y=8', 'z=47+38*x']

当然,这些结果不是索引列表,并且字符串y = 8不被视为公式。但是,从更大的角度来看,在进行更详细的处理之前,简化语法并将原始字符串拆分为单独的公式可能对您更有用。

于 2013-03-04T22:41:41.563 回答