使用ast.literal_eval的Python请求错误语法无效? [英] Python request using ast.literal_eval error Invalid syntax?

查看:838
本文介绍了使用ast.literal_eval的Python请求错误语法无效?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是python的新手,它尝试使用ast.literal_eval获取请求数据,从而导致语法无效".

i am new to python and trying to get request data using ast.literal_eval resulting in "invalid syntax" error.

它会打印我发送的数据格式,

It prints data i send that is format like,

192.156.1.0,8181,database,admin,12345

在python中,我显示了它,但是在读取我的代码时却出错了,

In python i display it but get error while reading it my code is,

    print str(request.body.read())
    datas = request.body.read()
    data=ast.literal_eval(datas)
    dbname = data['dbname']
    username = data['uname']
    ip = data['ip']
    port = data['port']
    pwd = data['pwd']

data = ast.literal_eval(datas)上的无效语法错误

Invalid syntax error on line data=ast.literal_eval(datas)

建议如何解决

谢谢

推荐答案

更改此内容:

192.156.1.0,8181,database,admin,12345

对此:

>>> a = "['192.156.1.0',8181,'database','admin',12345]"
>>> ast.literal_eval(a)
['192.156.1.0', 8181, 'database', 'admin', 12345]

ast.literal_eval

ast.literal_eval

ast.literal_eval(node_or_string)

Safely evaluate an expression node or a Unicode or Latin-1 encoded string containing
a Python literal or container display. The string or node provided may only consist of 
the following Python literal structures: strings, numbers, tuples, lists, dicts, booleans, and None.

 This can be used for safely evaluating strings containing Python values from untrusted 
sources without the need to parse the values oneself. It is not capable of evaluating 

任意复杂的表达式,例如涉及运算符或索引.

arbitrarily complex expressions, for example involving operators or indexing.

您可以尝试这样:

>>> a='192.156.1.0,8181,database,admin,12345'
>>> a = str(map(str,a.split(',')))
>>> a
"['192.156.1.0', '8181', 'database', 'admin', '12345']"
>>> ast.literal_eval(a)
['192.156.1.0', '8181', 'database', 'admin', '12345']

您的代码将如下所示:

data=ast.literal_eval(str(map(str,datas.split(','))))

这篇关于使用ast.literal_eval的Python请求错误语法无效?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆