怎么把‘[x,x,x,x,]’这样的字符串变为列表啊

2018-03-29 03:50:17 +08:00
 jakeyfly

我把多个列表存在 redis 的一个 set 里面 出来的时候 里面的列表全变成字符串了,怎么再变回列表啊

2597 次点击
所在节点    问与答
15 条回复
WO31400
2018-03-29 03:52:31 +08:00
python eval(str)
jakeyfly
2018-03-29 03:55:13 +08:00
@WO31400 我了个草 居然把这个忘了 感谢大佬深夜鼎立相助
wwqgtxx
2018-03-29 07:05:49 +08:00
其实对于 python 最正确的办法应该是调用 ast.literal_eval
congeec
2018-03-29 07:10:13 +08:00
blless
2018-03-29 07:11:35 +08:00
序列化,反序列化 ,请
locktionc
2018-03-29 08:20:17 +08:00
我一般是用 JSON 来处理,存之前 JSON dumps 取回来以后 JSON loads
Molita
2018-03-29 09:03:43 +08:00
@wwqgtxx 这个是对滴
SingeeKing
2018-03-29 09:25:55 +08:00
话说如果数据来源不够安全,有没有一个安全的方式来实现?
ipwx
2018-03-29 09:44:01 +08:00
为什么存进去的时候不 json。
jakeyfly
2018-03-29 12:16:46 +08:00
@ipwx 我是当管道用 多加一层 JSON 处理 会不会不效率
ipwx
2018-03-29 13:08:31 +08:00
@jakeyfly 你把 Python 列表往 Redis 塞的时候,估计它已经变成字符串了
jakeyfly
2018-03-29 13:59:08 +08:00
@ipwx 是这样的 塞进去就变成字符串了 然后 现在我进去都 JSON 一下 就可以了 不过不知道会不会慢
ssaber
2018-03-29 17:26:15 +08:00
hset,hget ?
ipwx
2018-03-29 19:59:09 +08:00
@jakeyfly 塞进去变字符串是因为隐式调用了 repr(obj)。Python 里面 JSON 序列化一般会比 repr(obj) 慢,但是胜在跨平台性能好。你要是不喜欢,可以用上面有人提到过的 ast.literal_eval 来读取 repr(obj) 的结果,然而我觉得 ast 会比 JSON 反序列化慢。也许 eval 比较快,我不确定,但是这东西有安全隐患,尽量别用。
ipwx
2018-03-29 19:59:54 +08:00
@jakeyfly “跨平台性能好”->“跨平台效果好”,或者“跨语言效果好”。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/442309

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX