0

我想用python制作一种简单的电子表格。

我需要从字符串中解析一个公式。

我现在需要的所有操作是:+ - * / ^ ()

公式将始终以“=”开头。

输入示例:

  1. =4+8-6/2 这很简单:只需使用 eval()

2.=4b+12*(2+5) 其中“4b”是指向电子表格中另一个单元格的链接(变量)。

** 可以使所有链接都像 'b4' 而不是 '4b'

该脚本会将链接(变量)替换为相应的值。

我无法实现的是让解析器“理解”变量,如“4b”或“b4”,其余的非常简单

你有什么建议?

PS我是Python新手。尝试过 pyparsing,但根据我的需要使用或更正自定义示例很复杂。希望找到更简单的解决方案

4

2 回答 2

1

我相信, ActiveState 有一个非常简单的基于 Python 的电子表格,可以满足您的大部分要求。它class SpreadSheet是根据几个内部字典以及极少数相对较短的方法来定义的。

相关评论也非常有趣,并展示了如何扩展和制作以尽量减少潜在的安全问题。我强烈建议你看看它。

我注意到的一个主要限制是没有依赖性检查,因此更新单元格不会自动更新任何可能依赖于它的内容,以及任何可能依赖于这些内容的内容,等等。

于 2013-07-08T13:16:27.900 回答
0

用于创建匿名函数的 Lambda 表达式将是处理此问题的有效方法。我建议查看一些 Peter Norvig 的 Udacity 课程 - 计算机程序的设计。作为第 2 课的一部分,他介绍了一个与密码算法非常相似的场景。该课程是免费的,并且是自定进度的,因此您可以根据需要尽可能多地参与和跳过课程/子课程:

https://www.udacity.com/course/cs212

于 2013-07-08T08:04:36.880 回答