在 OpenRefine 中使用 GREL 提取文本
Extract text using GREL in OpenRefine
我正在尝试使用 GREL 添加基于 OpenRefine 中的列的列。
我需要提取科学名称中第二个 space 之后的所有文本。
这里有两个原始单元格数据的例子--->我要提取的内容:
Amandinea punctata (Hoffm.) Coppins & Scheid. ---> (Hoffm.) Coppins & Scheid.
Agonimia tristicula (Nyl.) Zahlbr. ---> (Nyl.) Zahlbr.
一个解决方案:
分区似乎是一个很好的分隔符:“(”,取右边的部分并在开头添加一个缺失的“(”。
"("+value.partition(" (")[2]
以下是在给定数据上实现预期结果的三种方法,从容易理解到更高级。
使用列拆分
您可以 split the column 通过选择空格作为分隔符将其分成三列,并在相应的对话框中将新列的数量限制为 3。然后你可以删除前两列并得到你想要的结果。
使用数组函数
您可以通过 GREL 和 arrays 使用相同的技术...按空白拆分,丢弃前两个条目并在空白处加入其余条目。
value.split(" ").slice(2).join(" ")
使用正则表达式
您还可以将 match function 与正则表达式一起使用。
value.match(/\S+\s\S+\s(.+)/)[0]
我正在尝试使用 GREL 添加基于 OpenRefine 中的列的列。
我需要提取科学名称中第二个 space 之后的所有文本。
这里有两个原始单元格数据的例子--->我要提取的内容:
Amandinea punctata (Hoffm.) Coppins & Scheid. ---> (Hoffm.) Coppins & Scheid. Agonimia tristicula (Nyl.) Zahlbr. ---> (Nyl.) Zahlbr.
一个解决方案: 分区似乎是一个很好的分隔符:“(”,取右边的部分并在开头添加一个缺失的“(”。
"("+value.partition(" (")[2]
以下是在给定数据上实现预期结果的三种方法,从容易理解到更高级。
使用列拆分
您可以 split the column 通过选择空格作为分隔符将其分成三列,并在相应的对话框中将新列的数量限制为 3。然后你可以删除前两列并得到你想要的结果。
使用数组函数
您可以通过 GREL 和 arrays 使用相同的技术...按空白拆分,丢弃前两个条目并在空白处加入其余条目。
value.split(" ").slice(2).join(" ")
使用正则表达式
您还可以将 match function 与正则表达式一起使用。
value.match(/\S+\s\S+\s(.+)/)[0]