【发布时间】:2018-02-22 10:39:19
【问题描述】:
我有一个如下所示的 Python 脚本,我想对其进行转换:
import sys
# more imports
''' some comments '''
class Foo:
def _helper1():
etc.
def _helper2():
etc.
def foo1():
d = { a:3, b:2, c:4 }
etc.
def foo2():
d = { a:2, b:2, c:7 }
etc.
def foo3():
d = { a:3, b:2, c:7 }
etc.
etc.
if __name__ == "__main__":
etc.
我希望能够仅解析 foo*() 函数并仅保留具有某些属性的函数,例如 d={a:3, b:2}。显然保留所有非foo*() 的东西,这样转换仍然会运行。尽管d 可能有不同的键、值,但foo*() 的定义会很好。
是否有一些我可以通过链接使用的 unix 工具集?我可以使用grep 来识别foo,但是如何扫描接下来的几行以应用我的逻辑的保留或拒绝部分?
编辑:注意,我正在尝试在编写自定义解析器之前使用命令行工具执行此操作是否合理。我知道如何编写解析器。
【问题讨论】:
-
python 中内置了一些用于操作 python 的工具,这将比尝试正则表达式进入临时 python 解析器更可靠。
-
你好。你的问题是题外话,很可能很快就会结束。我建议您完成我们的tour 并阅读我们的help center 以了解本网站的主题。
-
hackernews 上有很多 cmets 关于 SO 变得多么激进,上面的评论强调了这一点。不知道为什么这被认为是题外话,因为我试图在编写自定义解析器之前重用现有工具。由于 unix 有几十个命令行工具,所以不要期望人们知道所有这些工具是有效的......
-
这更像是一个工具建议问题,而不是一个编程问题。但要回答您的问题,请查看 sed 和 awk。也就是说,@pvg 是绝对正确的;为此,您应该使用 python 标准库中内置的工具。
-
网站文档非常清楚地解释了为什么这些问题是题外话。看看help center
标签: python unix command-line-tool command-line-arguments