如何在Openrefine中获取数组中最长的字符串

时间:2018-08-11 12:11:34

标签: openrefine

使用GREL是否可以获取数组的最长字符串? 例如,如果我有一个包含3个字符串的数组[“ a”,“ aaa”,“ aa”],则我想获得“ aaa”。

1 个答案:

答案 0 :(得分:0)

您可能会以非常复杂的公式为代价来做到这一点。面对这种情况,Open Refine添加了Python(和Clojure)作为脚本语言。即使您不了解Python,也可以在两分钟内找到问题"how to choose the longest string in list?"的答案,只需复制并粘贴(通过添加“ return”而不是“ print”)

在这种情况下:

return max(['a','aaa','aaaa','aa'], key=len)

编辑

仅出于挑战的考虑,这是使用GREL的可能解决方案。

value = "a,aa,aaaa,aa"

forEach(value.split(','), e, if(length(e)==sort(forEach(value.split(','), e, e.length()))[-1], e, null)).join(',').split(',')

enter image description here