我试图使以下声明更灵活:
for posting in page.findAll(attrs = {"id": re.compile(r'''post\d+''')}):
Run Code Online (Sandbox Code Playgroud)
以下部分从CSV文件动态检索并存储在字符串中(例如名为test的字符串).CSV存储在安全位置,仅供管理员访问.
attrs = {"id": re.compile(r'''post\d+''')}
Run Code Online (Sandbox Code Playgroud)
我可以通过使用eval(test)或exec(test)代替测试来集成变量如下吗?
for posting in page.findAll(test)):
Run Code Online (Sandbox Code Playgroud)
小智 5
如果你想从用户输入运行代码(输入文件内容),你需要eval或者exec,通过这些名称或其他(特别是你需要exec语句 - 赋值是一个声明).
但你不想(也不应该)这样做,因为那是邪恶的,不安全的,完全没必要的等等.放弃作业(只是存储字典)和re.compile电话,然后你可以使用ast.literal_eval它,你就是非常安全(你仍然应该捕获语法错误以及显示合理错误消息可能出错的所有其他内容,但恶意代码应该几乎不可能,并且它几乎不会那么脏).re.compile如果您需要它,您可以应用后加载.