gpt4 book ai didi

python - 是否可以运行存储在 xml cdata 中的 python 代码?

转载 作者:太空宇宙 更新时间:2023-11-04 11:10:01 25 4
gpt4 key购买 nike

我有一个 xml 文件,其中一个标签中包含 python 代码

    <codeBlocks><!--The codeBlocks contains specific code for this layer -->
<codeblock name="getXYofFeature2">
<![CDATA[
def fun():
print("in fun")
]]>
</codeblock>
</codeBlocks>

cb = y.codeBlocks.find('codeblock',{'name':'getXYofFeature2'}).text
print(cb)
'\n\t\t\n\t\tdef fun():\n\t\t print("in fun")\n\t\t\n\t\t'

我想在我的 python 脚本中运行一段名为 getXYofFeature2 的代码。当我尝试运行以下命令时

>     exec(cb) 

我收到以下错误信息

exec(cb)   File "<string>", line 3
> def fun():
> ^ IndentationError: unexpected indent

是否可以在 xml 文件中运行存储在 CDATA 中的代码?如果是这样,最好的方法是什么?

最佳答案

是的,这是可能的。以下片段输出“in fun”:

import xml.etree.ElementTree as ET
import textwrap

XML = """
<codeBlocks><!--The codeBlocks contains specific code for this layer -->
<codeblock name="getXYofFeature2">
<![CDATA[
def fun():
print("in fun")
fun()
]]>
</codeblock>
</codeBlocks>"""

codeBlocks = ET.fromstring(XML)
cb = codeBlocks.find('codeblock').text
exec(textwrap.dedent(cb))

请注意,已添加 fun() 函数调用,并且 textwrap.dedent() 用于删除前导空格。

关于python - 是否可以运行存储在 xml cdata 中的 python 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58489409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com