我对 OpenRefine 有疑问。我正在添加一个基于 url 的新列,并从那里调用 API 以从受控词汇表 (AAT) 中获取一些术语。我解析结果并获得一个多值单元格,例如:
http://vocab.getty.edu/aat/300041366||aquatints (prints)::http://vocab.getty.edu/aat/300053242||aquatint (printing process)::http://vocab.getty.edu/aat/300191265||dust bags::http://vocab.getty.edu/aat/300191278||dust boxes::http://vocab.getty.edu/aat/300191278||dust boxes::http://vocab.getty.edu/aat/300191278||dust boxes::http://vocab.getty.edu/aat/300249564||aquatinters::http://vocab.getty.edu/aat/300249564||aquatinters::http://vocab.getty.edu/aat/300249564||aquatinters::http://vocab.getty.edu/aat/300249564||aquatinters::http://vocab.getty.edu/aat/300053242||aquatint (printing process)::http://vocab.getty.edu/aat/300041366||aquatints (prints)::http://vocab.getty.edu/aat/300041368||sandpaper aquatints::http://vocab.getty.edu/aat/300041368||sandpaper aquatints
我有当前结构的地方:
URI||Corresponding_TERM::URI||Corresponding_TERM
等等
我现在需要选择其中一条记录。我的解决方案是使用
value.split("::")[0]
以选择我想要的元素。
不幸的是,这种解决方案有非常明显的缺点,因为数组中元素的顺序不是恒定的,所以如果第一个元素 [0] 对一条记录来说是正确的,那么它可能不是下一条记录。
为了更好地解释自己,我现在有这种结构
-----------------------------------------------------------
|ID | Classification | Term_From_Thesaurus |
| 1 | Aquatints | uri||term1::uri||term2:: |
| 1 | Aquatints | uri||term1::uri||term2:: |
| 2 | Drypoints | uri||term3::uri||term4:: |
| 3 | Woodcut | uri||term5::uri||term6::uri||term7 |
-----------------------------------------------------------
我需要将 term1 与 Aquatints 关联,将 term 4 与 Drypoints 关联,将 term 7 与 Woodcut 关联。
我怎样才能做到这一点?一个解决方案可能是使用 facet 和大量的手动工作,但也许有更好的解决方案?去每条记录怎么样,如果 ID = 1 他们应该使用 term1,如果 ID=2 应该使用 term 4 等等。这可能吗?我真的不知道如何使用另一列的值作为变量来确定操作的结果。cell.cross 会有所帮助,但如果我需要将数据拆分为两个文件,并且在我看来这不是一个合适的解决方案..