Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何识别字符串中的python语句?_Python - Fatal编程技术网

如何识别字符串中的python语句?

如何识别字符串中的python语句?,python,Python,我正在用python做一个项目,要求如下: 我有一个变量,比如: some_variable = "os.getcwd()/local/bin" 现在变量中有一个python语句“os.getcwd()”。我必须识别它,执行它并替换变量中的值 注意:任何python语句都可以出现在字符串中。我必须识别它,分离它,执行并用它的值替换原始变量 如果当前工作目录为 /home/xyz 那么变量应该包含 /home/xyz/local/bin 像os.getcwd(),任何python语句都可以出

我正在用python做一个项目,要求如下: 我有一个变量,比如:

some_variable = "os.getcwd()/local/bin"
现在变量中有一个python语句“os.getcwd()”。我必须识别它,执行它并替换变量中的值

注意:任何python语句都可以出现在字符串中。我必须识别它,分离它,执行并用它的值替换原始变量

如果当前工作目录为

/home/xyz
那么变量应该包含

/home/xyz/local/bin
os.getcwd()
,任何python语句都可以出现。
如何识别字符串中的python语句?

如注释中所述,这通常非常困难(例如,因为您无法确定标识符是文本的一部分还是python名称)

因此,我建议稍微更改一下输入(假设在您的设置中这是可能的):Python模板引擎通常使用某种转义序列来否认Python语句的开始和结束。例如,您可以使用字符串
some_variable=“${os.getcwd()}/local/bin”
,这使得替换变得简单。此外,采用这种语法意味着您可以立即使用mako,而不必自己实现任何东西


当然,mako还有很多替代品,它只是我第一个想到的。

什么?你不能这样做,几乎任何东西都可以是Python语句,因为你可以随意命名你的变量。如果
local
bin
是变量名呢?如果您有
foo/bar/baz
,并且其中每一个都是指向浮点数的标识符,该怎么办?突然之间,整个东西变成了一个有效的Python表达式。如何在项目中获得这个字符串?它是由用户提供的还是由项目的另一部分自动生成的?这是糟糕的设计。您应该有一些“标记”,以明确用户希望将文本解释为Python代码。否则,您可能会陷入意外结果的陷阱。例如,
some_variable=“credits”
很可能是一个有效的文件名。@E先生:我从xml文件中得到的输入是这样的:这通常不是不可能的,这与任何语言解析器在早期阶段所做的差不多。python语句来自xml文件,如:`@HighPerformanceMark:是的。。。然而,解析器将因任何非法语法而失效,而OP只想忽略它。虽然不可能是不正确的,但我至少会考虑它很难。@ ViaySurve:我不能改变XML文件的内容使用某种分隔符,我的答案中的方法对你没有帮助,抱歉。