<p>一种方法是使用内置的<a href="https://docs.python.org/3/library/functions.html#eval" rel="nofollow noreferrer">^{<cd1>}</a>方法:</p>
<pre><code>my_dataframe_list = ['df1', 'df2', 'df3']
my_dataframe_list = [eval(df) for df in my_dataframe_list]
</code></pre>
<p>您可以使用<a href="https://docs.python.org/3/library/functions.html#map" rel="nofollow noreferrer">^{<cd2>}</a>代替列表理解:</p>
<pre><code>my_dataframe_list = ['df1', 'df2', 'df3']
my_dataframe_list = list(map(eval, my_dataframe_list))
</code></pre>
<p><strong>但是要小心,<code>eval</code>方法是危险的</strong>;您不应该在不受信任的输入上使用它。有关更多详细信息,请参阅本文:<a href="https://nedbatchelder.com/blog/201206/eval_really_is_dangerous.html" rel="nofollow noreferrer">Eval really is dangerous</a></p>
<p>也许一个更过滤的列表会更好:</p>
<pre><code>my_dataframe_list = [eval(df) for df in my_dataframe_list if df.startswith('df') and df[2:].isdigit()]
</code></pre>
<p>但是,当然,您可以做的最好的事情是以一种不需要使用<code>eval</code>的方式构造现有代码</p>
<hr/>
<p>此堆栈溢出帖子建议使用<a href="https://docs.python.org/3/library/ast.html#ast.literal_eval" rel="nofollow noreferrer">ast.literal_eval()</a>方法:<a href="https://stackoverflow.com/a/3513475/13552470">Python: make eval safe</a></p>
<p>当然,它需要您安装<code>ast</code>模块,并且提供的字符串或节点可能只包含以下Python文本结构:字符串、字节、数字、元组、列表、dicts、set、booleans和None</p>