gpt4 book ai didi

Python 请求使用 ast.literal_eval 错误语法无效?

转载 作者:可可西里 更新时间:2023-11-01 16:26:43 25 4
gpt4 key购买 nike

我是 python 的新手,尝试使用 ast.literal_eval 获取请求数据导致“语法无效”错误。

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

192.156.1.0,8181,database,admin,12345

在 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']

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(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 evaluatingarbitrarily 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(','))))

关于Python 请求使用 ast.literal_eval 错误语法无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27055826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com