是否可以根据现有列中的关键字添加列?

时间:2014-10-15 16:00:10

标签: regex string openrefine

从广义上讲,这就是我要做的事情:在电子表格的一个单元格中解析一个字符串,然后如果在解析的单元格中找到某些关键字,则将关键字添加到该行中的另一个单元格。

我正在使用OpenRefine(技术上是Google Refine 2.5)尝试使用“基于此列添加列”功能,并且我还没有在新列中显示任何内容。< / p>

这是我正在使用的GREL表达式的当前迭代:

if (contains(cells["dates and codes"].value,"beef"), cells["protein"].value +=" beef", "")

它引发了以下错误:

  

偏移量77处的解析错误:缺少数字,字符串,标识符,正则表达式或带括号的表达式

我是这个软件和GREL的新手,但我的搜索还没有出现这种字符串函数。 (我想我现在对如何引用特定细胞有更好的了解,但我认为这也可能是问题。)

一个。这可能吗?和 B.有没有比编写一堆if(contains())语句更有效的方法呢?

1 个答案:

答案 0 :(得分:0)

您的GREL表达式有意义,看起来您在偏移77处有一个额外的等号。

  

if(contains(cells [“date and codes”]。value,“beef”),cells [“protein”]。value +“beef”,“”)

您将需要在任何情况下定义包含逻辑,以便您可以将所有内容包装在超长GREL表达式中。或者,您可以分别对每个if(contains())进行分解。为了获得一些时间,我将做如下:

  1. 写一个表达式
  2. 将其导出到notepade
  3. 使用搜索和替换功能
  4. 更新它
  5. 将新表达式重新应用于您的项目。
  6. 您可以在this blog post中找到有关此流程的更多详细信息。