碰到的问题:数据库中有一个类型为字符串的字段,该字段对应的值是元组的形式,但是值类型仍属于字符串,在取出使用时,因为类型不匹配出大问题,很烦!
取出的数据和类型如下:
('2018-01-01', '2022-07-22')
<class 'str'>
解决方法:
1.首先,我直接使用tuple对字符串进行转换,发现完全不行,直接将字符串的每一个字符都转为了元组里的元素。(失败)
('(', "'", '2', '0', '1', '6', '-', '0', '1', '-', '0', '1', "'", ',', ' ', "'", '2', '0', '2', '2', '-', '0', '7', '-', '2', '2', "'", ')')
2.在网上最终找到了别人和我一样的问题及解决方法:
使用python内置的eval函数,解决。(顿时觉得这是个神奇的函数)
>>> c = "(1,2,3)"
>>> type(c)
<class 'str'>
>>> d = eval(c)
>>> d
(1, 2, 3)
>>> type(d)
<class 'tuple'>
3.eval函数(之前并没有使用过该函数,它能这样转格式不免让我好奇了起来)
eval() 函数用来执行一个字符串表达式,并返回表达式的值。
语法
以下是 eval() 方法的语法:
eval(expression[, globals[, locals]])
参数
- expression -- 表达式。
- globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
- locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。