【发布时间】:2014-10-03 18:42:10
【问题描述】:
我一直在尝试将我的 python 项目中的一些变量存储在用户可读/可编辑的文本文件中的方法。文本文件的布局如下:
a = "hello"
b = 123
c = [4,5,6]
如您所见,a 表示字符串,b 表示整数,c 表示列表。我到目前为止的代码如下:
for line in file:
name = line.split('=')[0]
value = line.split('=')[1]
vars()[name] = value
它在“=”处拆分行并将第一部分设置为变量名,将第二部分设置为该变量的值。
但是,当程序运行时,b (123) 和 c ([4,5,6]) 都保存为字符串,而不是整数和列表。
有什么方法可以将字符串转换为正确的类型?或者他们是一种更好(但仍然简单)的方式来做我想做的事情?
任何帮助将不胜感激。谢谢!
【问题讨论】:
-
你可以使用
eval,但是有一堆安全隐患。 -
看看
ast.literal_eval。不像eval,使用起来很安全。 -
也许只是做一个函数说“嘿,这是一个列表吗?”使用
line.startswith('[')之类的东西(甚至像老板一样的正则表达式),然后使用字符串 manip 对其进行排序,并最终在字符串 int 上使用 int() 来最终转换它们......会比 eval/exec 更安全,但实际上需要工作 -
你会想要 exec 而不是 eval 我相信
标签: python