【问题标题】:Extracting data from non-python nested lists in python (maybe json data?)从python中的非python嵌套列表中提取数据(也许是json数据?)
【发布时间】:2021-03-03 21:06:35
【问题描述】:

我有一堆要解析的数据,我已经设法将所有这些数据放入数据库,但最后一部分让我感到困惑,将日期以“不错”的形式放入数据库格式。如果我能弄清楚如何从数据中只提取日期字符串,那么使用 dateparser 应该不难,但这部分真的很吸引我,我的大脑不知道该去哪里。

这是数据的格式。可能还有其他键值对。

[("[{'key': 'Date', 'value': 'Wednesday, 3 March 2021'}]",)]

而我所做的唯一对远程有用的事情就是弄清楚 python 将允许我列出键值对

[{'key': 'Date', 'value': 'Wednesday, 3 March 2021'}]

使用

data = [("[{'key': 'Date', 'value': 'Wednesday, 3 March 2021'}]",)]
for a in data:
    for b in a:
        print(b)

数据格式为:

[("[{'key': 'key1', 'value': 'value1'}]", "[{'key': 'key2', 'value': 'value2'}]", "[{'key': 'key3', 'value': 'value3'}]")]

我可以暴力破解它,虽然我知道这很简单,但我就是想不通。任何有关寻找优雅和正确解决方案的帮助表示赞赏。


感谢@Kraigolas,这是我想要的代码

data = [("[{'key': 'Date', 'value': 'Wednesday, 3 March 2021'}]",)]
for a in data:
    data = [eval(element)[0] for element in a]
    if(data[0]['key'] == "Date"):
        print(data[0]['value'])

【问题讨论】:

  • 数据看起来像[("[{'key': 'Date', 'value': 'Wednesday, 3 March 2021'}]",), ("[{'key': 'Date', 'value': 'Thursday, 4 March 2021'}]",), ...]吗?不清楚
  • @Kraigolas 我更新了 OP,澄清了数据格式

标签: python json list parsing tuples


【解决方案1】:

这个问题可以通过几个步骤来解决。

要开始这个问题,让:

data =  [("[{'key': 'key1', 'value': 'value1'}]", "[{'key': 'key2', 'value': 'value2'}]", "[{'key': 'key3', 'value': 'value3'}]")]

寻址元组

您的列表中有一个完整的元组。让我们抓住元组并使用它来代替。

data = data[0] 
# ("[{'key': 'key1', 'value': 'value1'}]", "[{'key': 'key2', 'value': 'value2'}]", "[{'key': 'key3', 'value': 'value3'}]")

处理字符串

请注意,元组中的元素看起来像这样

element = "[{'key': 'key1', 'value': 'value1'}]"

如果不是字符串,那将是列表中的字典!让我们使用eval 命令以这种形式获取它:

element = eval(element)  
# [{'key': 'key1', 'value': 'value1'}]

摆脱外部列表

为了摆脱列表,我们抓取第 0 个元素来只取回字典

element = element[0] 
# {'key': 'key1', 'value': 'value1'}

获取数据

返回日期的“值”索引。

element = element["value"]
# "value1"

把这一切放在一个列表理解中

dates = [eval(element)[0]["value"] for element in data[0]]
# ['value1', 'value2', 'value3']

【讨论】:

  • 非常感谢,我在您最初的回复中稍作修改,以便检查每个键值对。你让我克服了通过所有这些括号的障碍!
  • @yuuuu 乐于助人!
猜你喜欢
  • 2020-06-28
  • 2022-01-05
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 2020-09-05
  • 2018-05-12
相关资源
最近更新 更多