如何修复字符串格式的函数语法?

问题描述 投票:0回答:1

我有一个包含字符串格式的 python 函数的文本文件。我的代码从文本文件中读取每个函数,为其提供适当的输入,然后运行它。要从文本文件运行函数字符串(例如

fun_str
),我在我的代码中使用以下代码片段:

dict = {}
exec(fun_str, globals(), dict)
f, = dict.values()
f()

只要每个函数字符串都具有 python 标准语法(在缩进、换行等方面),代码就可以正常运行。但是,如果代码读取函数字符串,例如:

"def fun(list): output_list = [] for i in list: if i not in output_list: output_list.append(i) return output_list"

(全部在一行中)

然后

SyntaxError: invalid syntax
^^^
下用
for
提出。

是否有任何内置模块或任何方法来修复函数字符串,使其在由

exec
运行之前遵循标准语法?

python python-3.x
1个回答
4
投票

如果你使用一些 python 代码并删除所有换行符,则不一定可以转换回原始代码。

例如:

def f(x): if x == None: return doSomething(x)

可能意味着:

def f(x):
    if x == None:
        return doSomething(x)

def f(x):
    if x == None:
        return
    doSomething(x)

所以这是不可能的,除非你知道一些关于那个代码的东西,可以让你明确地将它转换回它的原始含义。

© www.soinside.com 2019 - 2024. All rights reserved.