FM2*_*020 21 python malformed valueerror
为什么ValueError: malformed node or string当我将以下格式的数据传递到“parse_webhook”函数时会收到此错误消息?
谢谢!
webhook_data = {"side": "BUY","key": "8234023409fa3242309sdfasdf903024917325"}
def parse_webhook(webhook_data):
"""
:param webhook_data: POST data from tradingview, as a string.
:return: Dictionary version of string.
"""
data = ast.literal_eval(webhook_data)
return data
Run Code Online (Sandbox Code Playgroud)
我得到错误:
File "C:\Users\User\anaconda3\lib\ast.py", line 55, in _convert_num
raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: {'side': 'BUY', 'key': '8234023409fa3242309sdfasdf903024917325'}
Run Code Online (Sandbox Code Playgroud)
Abh*_*ate 17
ast.literal.eval:\n\n安全地评估表达式节点或包含 Python 表达式的 Unicode 或 Latin-1 编码\n字符串。提供的字符串或节点只能包含以下 Python 文字结构:字符串、数字、元组、列表、字典、布尔值和 None。
\n
您无法将字典传递给ast.literal_eval. 它只需要一个字符串输入并将其转换为适当的 python 对象。您不能将列表/字典/元组等传递给ast.literal_eval.
以下代码片段是此方法的有效使用 -
\nimport ast\n# Converting a string representation of dictionary into dictionary.\nwebhook_data = ast.literal_eval(\'{"side": "BUY","key": "8234023409fa3242309sdfasdf903024917325"}\')\nprint(webhook_data)\nRun Code Online (Sandbox Code Playgroud)\n输出:
\n{\'side\': \'BUY\', \'key\': \'8234023409fa3242309sdfasdf903024917325\'}\nRun Code Online (Sandbox Code Playgroud)\n当您有字符串形式的列表、元组、布尔值、数字、集合等时,您也可以使用它,并且此方法会将其评估为适当的 python 对象。
\n您已经拥有一本与您一起构建的字典。您可以通过执行以下编辑来使代码正常工作:
\nwebhook_data = {"side": "BUY","key": "8234023409fa3242309sdfasdf903024917325"}\n\ndef parse_webhook(webhook_data):\n\n """\n :param webhook_data: POST data from tradingview, as a string.\n :return: Dictionary version of string.\n """\n\n data = ast.literal_eval(str(webhook_data))\n return data\nRun Code Online (Sandbox Code Playgroud)\n但上面的代码是多余的。您只需使用将字典转换为字符串str(),然后使用 . 将字符串转换回字典ast.literal_eval。
笔记:
\n由于 Python\xe2\x80\x99s AST 编译器中的堆栈深度限制,使用足够大/复杂的字符串可能会导致 Python 解释器崩溃。
\nast.literal_eval如果输入不是有效的 Python 数据类型,则会引发异常,因此如果不是有效的代码,则不会执行。
| 归档时间: |
|
| 查看次数: |
104819 次 |
| 最近记录: |