Python中如何通过存储变量名的字符串获取对应变量值
通过字符串变量名获取对应对象的实现方法
你当前代码里d3存储的是普通字符串值,直接打印当然只会输出"apr_30"本身,不会自动匹配同名变量,以下是几种可行的实现方案,按推荐优先级排序:
优先方案:字典映射(最安全、可维护性最高)
不要零散定义独立变量,直接把「变量名字符串」和「对应对象」的映射关系存在字典里,按需取值即可,完全可控,没有安全风险。import pandas as pd # 注:pandas原生没有pd.txt方法,读文本文件请根据文件格式用pd.read_csv/pd.read_table var_dict = { "apr_30": pd.read_table('example.txt') } d3 = "apr_30" # 直接按键取值即可拿到对应的文档对象 print(var_dict[d3])后续如果要加其他日期对应的文件,直接往
var_dict里加键值对就行,批量处理也非常方便。备选方案:通过内置作用域方法取值
如果变量已经提前定义在作用域里,可以直接用Python内置的globals()(全局作用域)或locals()(局部作用域)拿到当前作用域的变量字典,再按字符串key取值:import pandas as pd apr_30 = pd.read_table('example.txt') d3 = "apr_30" # 全局作用域下取对应变量 print(globals()[d3])这个方法可控性比字典差,不建议在复杂项目里用,临时写简单脚本可以凑合用。
不推荐方案:使用eval函数
直接写eval(d3)也能拿到对应值,但eval会直接执行传入的任意字符串内容,如果字符串来源不可控会引发严重的代码注入漏洞,非极端情况不要用。
另外提一句你原代码里的小问题:d3 = ("apr_30")外层的括号没有任何实际作用,等价于直接写d3 = "apr_30",就是普通的字符串赋值。
内容的提问来源于stack exchange,提问作者nwah
相关产品推荐
相关产品推荐

