1

我有一个 csv,其中包含单元格中的纯文本条目以及 JSON 数组。我是 OpenRefine 和 GREL 的新手,无法找到用于清理此 csv 的表达式。我只想获取 JSON 数组中“名称”键的值。

示例单元格:

[{'name': 'Pixar Animation Studios', 'id': 3}]
[{'name': 'TriStar Pictures', 'id': 559}, {'name': 'Teitler Film', 'id': 2550}, {'name': 'Interscope Communications', 'id': 10201}]
[{'name': 'Twentieth Century Fox Film Corporation', 'id': 306}]
[{'iso_3166_1': 'US', 'name': 'United States of America'}]

预期返回值:

Pixar Animation Studios
TriStar Pictures, Teitler Film, Interscope Communications
Twentieth Century Fox Film Corporation
United States of America
4

2 回答 2

1

如果您的数据看起来像这样...

在此处输入图像描述

...汤姆莫里斯的公式行不通。似乎 Open 精炼不喜欢 Json 中的单引号。此外,由于有时您有多个“名称”,因此您必须使用forEach()循环检索它们。

公式如下:

forEach(value.replace("'", '"').parseJson(), v, v.name).join(',')

这意味着:用“替换',解析json,然后,对于数组中的每个元素,将其放入变量v并获取其值“name”。最后,用逗号连接结果数组。

最后结果:

在此处输入图像描述

于 2020-05-09T17:38:34.153 回答
0

首先,您需要将字符串解析为 JSON 对象,然后您将能够使用普通的基于键的字典访问来访问这些值。

value.parseJson()['name']

您可以使用此表达式添加新列或使用 Transform 对现有列进行操作。

于 2020-05-09T14:04:46.373 回答