Python Eval强制将字符串转换成dict类型出错,evaldict,我有个字符串如下:{\"
Python Eval强制将字符串转换成dict类型出错,evaldict,我有个字符串如下:{\"
我有个字符串如下:{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}"
当我使用Python shell 时 :
ddb='{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_yd_login\", \"category\":\"hdfs\", \"ruler\":\"HDFS_5aedbdf799494932\", \"count\":2, \"totalDelay\":-1, \"totalProcessDelay\":24115, \"time\":1430360048929}'
eval(ddb)
{'category': 'hdfs', 'count': 2, 'tag': 'urs_yd_login', 'totalDelay': -1, 'time': 1430360048929, 'totalProcessDelay': 24115, 'ruler': 'HDFS_5aedbdf799494932', 'hostname': 'datastream2', 'module': 'sink'}
此时能够正常转换成字典类型,但是在程序里边这样写就会抛出异常:
脚本如下格式:
print format_data[1]
ddddd = r'%s' % format_data[1].strip('"')
print ddddd
log_detail = eval(ddddd)
输出如下:
{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}"
{\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}
unexpected character after line continuation character (, line 1)
麻烦各位大侠,帮小弟指点指点。
为什么会有斜杠在里面?本身就有的吗?可以去掉吗?试试json转换
脚本里你用了 ddddd = r'%s' % format_data[1].strip('"') 来赋值的有 r
shell里没这样干,所以脚本出错了
用ast.literal_eval来做这件事,更安全和方便一点
文档:https://docs.python.org/2/library/ast.html#ast.literal_
import jsonjson_str = {\"module\":\"sink\", \"hostname\":\"datastream2\", \"tag\":\"urs_queryuser_mq\", \"category\":\"mq\", \"ruler\":\"MQ_55f85a369b22441e\", \"count\":425, \"totalDelay\":-1, \"totalProcessDelay\":2947890, \"time\":1430395550006}my_dic = json.loads(json_str)
编橙之家文章,
相关内容
- 关于Python爬取网址结构问题及怎么跳过当前文件继续下
- Python可以实现知乎网站公共编辑功能吗,python编辑,想知
- 获取t分布值能用python方法来完成吗?需要怎么写源码,
- SSH到Llinode服务器,Python关闭运行的问题,sshllinode,SSH到
- 环境部署问题,python web应用可以在代码中判断debug模式吗
- anaconda3 4.3 python 3版本运行不了scrapy?,anaconda3scrapy,写
- Python分片赋值删除元素要怎么理解?,,>>> number
- Python能监控键盘事件操作吗?,python监控键盘事件,我知
- 求分析缓存装饰器的执行思路及流程是什么,思路流程
- Python REPL通俗的理解什么?,pythonrepl,“读取-求值-输出
评论关闭