【问题标题】:Python string should end up in dictionaryPython 字符串应该以字典结尾
【发布时间】:2021-04-02 08:13:39
【问题描述】:

我试图让这个字符串最终出现在字典中,但我在下面收到错误消息。知道如何解决这个问题吗?谢谢。

我的代码:

import ast
str = '{"success":true,"timestamp":1617349986,"base":"EUR","date":"2021-04-02","rates":{"USD":1.177996}}'
d = ast.literal_eval(str)

错误:

Traceback (most recent call last):
  File "C:\Users\xh\Documents\Other und Programme\Programme\PyCharm Community Edition 2018.3.1\helpers\pydev\_pydevd_bundle\pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<input>", line 1, in <module>
  File "C:\Users\xh\AppData\Local\Programs\Python\Python37\lib\ast.py", line 91, in literal_eval
    return _convert(node_or_string)
  File "C:\Users\xh\AppData\Local\Programs\Python\Python37\lib\ast.py", line 79, in _convert
    map(_convert, node.values)))
  File "C:\Users\xh\AppData\Local\Programs\Python\Python37\lib\ast.py", line 90, in _convert
    return _convert_signed_num(node)
  File "C:\Users\xh\AppData\Local\Programs\Python\Python37\lib\ast.py", line 63, in _convert_signed_num
    return _convert_num(node)
  File "C:\Users\xh\AppData\Local\Programs\Python\Python37\lib\ast.py", line 55, in _convert_num
    raise ValueError('malformed node or string: ' + repr(node))
ValueError: malformed node or string: <_ast.Name object at 0x00000215DF9CA248>

【问题讨论】:

  • 您的字符串不是有效的 Python。它看起来像 JSON。为什么你认为它是 Python 文字?

标签: python python-3.x string dictionary error-handling


【解决方案1】:

您拥有的是有效的 JSON。不要使用ast.literal_eval,使用json模块

import json
true
spam = '{"success":true,"timestamp":1617349986,"base":"EUR","date":"2021-04-02","rates":{"USD":1.177996}}'
eggs = json.loads(spam)
print(eggs)

附带说明 - 不要使用 str 作为名称 - 这是一个内置函数。

【讨论】:

  • 非常感谢。解决了我的问题。
【解决方案2】:

您的字符串似乎是 JSON 格式。

使用json 模块:

import json

input_str = '{"success":true,"timestamp":1617349986,"base":"EUR","date":"2021-04-02","rates":{"USD":1.177996}}'

input_dict = json.loads(input_str)
print(input_dict)

这给出了:

{'success': True, 'timestamp': 1617349986, 'base': 'EUR', 'date': '2021-04-02', 'rates': {'USD': 1.177996}}

【讨论】:

  • 非常感谢。解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多