【问题标题】:Convert string representation of list of dictionaries to list of dictionaries [duplicate]将字典列表的字符串表示形式转换为字典列表[重复]
【发布时间】:2020-06-01 22:13:01
【问题描述】:

这是字符串表示

Data = "[{'Date': '16-Sep-2019', 'Open': 10994.85, 'High': 11052.7, 'Low': 10968.2, 'Close': 11003.5, 'Shares Traded': 434449776, 'Turnover (Rs. Cr)': 15786.17}, {'Date': '17-Sep-2019', 'Open': 11000.1, 'High': 11000.1, 'Low': 10796.5, 'Close': 10817.6, 'Shares Traded': 482013044, 'Turnover (Rs. Cr)': 17721.93}]"

我希望它是列表表示

Data = [{'Date': '16-Sep-2019', 'Open': 10994.85, 'High': 11052.7, 'Low': 10968.2, 'Close': 11003.5, 'Shares Traded': 434449776, 'Turnover (Rs. Cr)': 15786.17}, {'Date': '17-Sep-2019', 'Open': 11000.1, 'High': 11000.1, 'Low': 10796.5, 'Close': 10817.6, 'Shares Traded': 482013044, 'Turnover (Rs. Cr)': 17721.93}]

我尝试了所有方法,包括 json.loads(data), 即使在 json.loads() 之后,它也会将类型显示为字符串。请同时检查在线编译器。 谢谢你

【问题讨论】:

  • 好吧 eval(string) 会在技术上做到这一点,但除了我自己的一次性使用代码(或非常值得信赖的来源)之外,我会避免使用它。如果这不好,您必须知道您收到的字符串格式并对其进行解析。
  • @tgrtim 请帮忙。不,它不适用于 eval。
  • 您可以使用ast 包。看看这里stackoverflow.com/questions/59607551/…

标签: python-3.x


【解决方案1】:

只需使用 eval 函数。

data=eval("[{'Date': '16-Sep-2019', 'Open': 10994.85, 'High': 11052.7, 'Low': 10968.2, 'Close': 11003.5, 'Shares Traded': 434449776, 'Turnover (Rs. Cr)': 15786.17}, {'Date': '17-Sep-2019', 'Open': 11000.1, 'High': 11000.1, 'Low': 10796.5, 'Close': 10817.6, 'Shares Traded': 482013044, 'Turnover (Rs. Cr)': 17721.93}]")
print(type(data))
print(data[0])

输出:

<class 'list'>
{'Date': '16-Sep-2019', 'Open': 10994.85, 'High': 11052.7, 'Low': 10968.2, 'Close': 11003.5, 'Shares Traded': 434449776, 'Turnover (Rs. Cr)': 15786.17}

【讨论】:

  • 只是不要...至少使用literal_eval from ast会更好
【解决方案2】:

你可以试试这个:

L = Data.strip('][').split(', ') 

print(L)
print(type(L))

res = '['+Data.strip('][')+']'

print(res)
print(type(res))

【讨论】:

  • 不像 ["{'Date': '16-Sep-2019'",... 我希望它像 [{'Date': '16-Sep-2019',
猜你喜欢
  • 2021-12-01
  • 2019-03-02
  • 2010-11-02
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多