use*_*724 2 python parsing json http httprequest
我是 python 新手,并尝试使用 ast.literal_eval 获取请求数据,导致“语法无效”错误。
它打印我发送的数据,格式如下,
192.156.1.0,8181,database,admin,12345
Run Code Online (Sandbox Code Playgroud)
在python中我显示它但在阅读它时出错我的代码是,
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']
Run Code Online (Sandbox Code Playgroud)
行data=ast.literal_eval(datas)上的无效语法错误
如何解决它的建议将是可观的
谢谢
改变这个:
192.156.1.0,8181,database,admin,12345
Run Code Online (Sandbox Code Playgroud)
对此:
>>> a = "['192.156.1.0',8181,'database','admin',12345]"
>>> ast.literal_eval(a)
['192.156.1.0', 8181, 'database', 'admin', 12345]
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
任意复杂的表达式,例如涉及运算符或索引。
你可以这样尝试:
>>> 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']
Run Code Online (Sandbox Code Playgroud)
您的代码将如下所示:
data=ast.literal_eval(str(map(str,datas.split(','))))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11584 次 |
| 最近记录: |