OpenRefine 中的 forNonBlank 函数
forNonBlank function in OpenRefine
在 OpenRefine 的模板导出功能中使用 forNonBlank 时出现错误。
我有多个主题的单元格,我想在单独的 dcterms:subject xml 元素中捕获这些主题。例子:
Geology--Alberta--Coal Valley. // Geology, Structural. // Geology, Stratigraphic--Cretaceous.
我正在使用 OpenRefine 的模板导出选项导出到 XML,类似于此处描述的过程。
这个表达式工作正常:
{{forEach(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n")}}
我得到:
<dcterms:subject>Geology--Alberta--Coal Valley.</dcterms:subject>
<dcterms:subject>Geology, Structural.</dcterms:subject>
<dcterms:subject>Geology, Stratigraphic--Cretaceous.</dcterms:subject>
但是当使用 forNonBlank 时:
{{forNonBlank(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n", "")}}
我得到:
<dcterms:subject>[Ljava.lang.String;@16657412</dcterms:subject>
我的代码有问题吗,或者这是一个错误?
感谢您的帮助。
forNonBlank 不是迭代函数,所以函数:
forNonBlank(单元格["dcterms:subject"].value.split(" // "), v, "" + v + "\n", "")
评估通过拆分创建的数组是否为空(整个数组,而不是数组中的每个项目)并发现它不是空的将数组分配给变量'v'。
本质上 'forNonBlank' 做的事情类似于组合 'if' 和 'isNonBlank',而不是 'forEach' 和 'isNonBlank'
你有多种选择来做你想做的事,但你需要在某处有一个迭代器。例如:
forEach(单元格["dcterms:subject"].value.split(" // "),v,forNonBlank(v,w, "" + w + "", "")).join ("/n")
在 OpenRefine 的模板导出功能中使用 forNonBlank 时出现错误。
我有多个主题的单元格,我想在单独的 dcterms:subject xml 元素中捕获这些主题。例子:
Geology--Alberta--Coal Valley. // Geology, Structural. // Geology, Stratigraphic--Cretaceous.
我正在使用 OpenRefine 的模板导出选项导出到 XML,类似于此处描述的过程。
这个表达式工作正常:
{{forEach(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n")}}
我得到:
<dcterms:subject>Geology--Alberta--Coal Valley.</dcterms:subject>
<dcterms:subject>Geology, Structural.</dcterms:subject>
<dcterms:subject>Geology, Stratigraphic--Cretaceous.</dcterms:subject>
但是当使用 forNonBlank 时:
{{forNonBlank(cells["dcterms:subject"].value.split(" // "), v, "<dcterms:subject>" + v + "</dcterms:subject>\n", "")}}
我得到:
<dcterms:subject>[Ljava.lang.String;@16657412</dcterms:subject>
我的代码有问题吗,或者这是一个错误?
感谢您的帮助。
forNonBlank 不是迭代函数,所以函数:
forNonBlank(单元格["dcterms:subject"].value.split(" // "), v, "" + v + "\n", "")
评估通过拆分创建的数组是否为空(整个数组,而不是数组中的每个项目)并发现它不是空的将数组分配给变量'v'。
本质上 'forNonBlank' 做的事情类似于组合 'if' 和 'isNonBlank',而不是 'forEach' 和 'isNonBlank'
你有多种选择来做你想做的事,但你需要在某处有一个迭代器。例如:
forEach(单元格["dcterms:subject"].value.split(" // "),v,forNonBlank(v,w, "" + w + "", "")).join ("/n")