首页新闻找找看学习计划

Python中关于用eval转换字符串

0
悬赏园豆:50 [已解决问题] 解决于 2019-03-27 17:32

user_history.txt里存的是:
{'name': '电脑', 'price': 19999}{'name': '电脑', 'price': 19999}

with open("user_history.txt", "w+")as f2:
history = f2.read()
history = eval(history)
print(history)

当执行history = eval(history)这条语句时就会出错

stu*sun的主页 stu*sun | 初学一级 | 园豆:129
提问于:2019-03-27 14:00
< >
分享
最佳答案
0

eval的参数可以是表示字典、列表和元组的字符串,你传入的{'name': '电脑', 'price': 19999}{'name': '电脑', 'price': 19999}不是这三个之一,所以出错了。我猜你是想构造一个列表吧,这个列表里有两个字典,是这样吗?如果是的话,你需要先处理一下读出来的东西,格式化为列表:[{'name': '电脑', 'price': 19999}, {'name': '电脑', 'price': 19999}]。就是这样,别忘了结贴!

收获园豆:50
会长 | 大侠五级 |园豆:6043 | 2019-03-27 14:24

请问传入的那个为什么不算字典呢?

stu*sun | 园豆:129 (初学一级) | 2019-03-27 14:35

@stu*sun: 我无言以对......
{key:value}这样才是一个字典。

会长 | 园豆:6043 (大侠五级) | 2019-03-27 15:37

@会长:我是初学者,有些不太明白
{key1 : value1, key2 : value2 }
我是这样写的,也算字典吧?

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:20

@stu*sun: 算。但是{key:value}{key:value}就不算了

会长 | 园豆:6043 (大侠五级) | 2019-03-27 17:23

@会长: 那如果要eval()多个值该怎么办呢?

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:24

@stu*sun: 就像我那样,搞成列表。或者eval多次

会长 | 园豆:6043 (大侠五级) | 2019-03-27 17:24

@会长: 我改了下程序,按你说的改的 ,当输入是一个值得时候可以但是两个值以上就会报错

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:25

@会长:

是这样的吗?

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:27

@stu*sun: 不明白

会长 | 园豆:6043 (大侠五级) | 2019-03-27 17:27

@stu*sun: 这样写能编译通过,怎么感觉不是python的语法,第一行右侧是什么?

会长 | 园豆:6043 (大侠五级) | 2019-03-27 17:29

@会长: 啊 找着问题了 我知道了 谢谢指导

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:30

@stu*sun: 别忘了给我园豆

会长 | 园豆:6043 (大侠五级) | 2019-03-27 17:30

@会长: 第一行右边是 debug时显示的

stu*sun | 园豆:129 (初学一级) | 2019-03-27 17:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册