如何将内容是元组格式的字符串转为元组,保留原格式?

碰到的问题:数据库中有一个类型为字符串的字段,该字段对应的值是元组的形式,但是值类型仍属于字符串,在取出使用时,因为类型不匹配出大问题,很烦!

取出的数据和类型如下:

('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 -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值