2

我是 OpenRefine 的新手。

我想将下面两个示例的字符串拆分为不同的列。

示例 1:/articles/the_year_of_cooking_6_ways_to_make_2014_meals_your_best?affref=whatever

示例 2:/?Article=younger_looking_everything_5_tips_for_aging_well&affref=anotherwhatever

第一个例子应该分为三列:

/articles/ 烹饪之年 2014 年美食的 6 种方法?affref=随便

第二个例子应该分为三列:

/?Article= 看起来更年轻的 5 个老化技巧中的一切 &affref=anotherwhatever

编辑列>拆分似乎不允许使用不同的分隔符(“/”、“=”、“&”)

Edit Column > Add Column Based on This Column 似乎是正确的,但我对正则表达式或 GREL 的了解不够,无法实现。

任何帮助将不胜感激。

谢谢。

4

3 回答 3

0

您可以将两个单独的拆分操作与不同的单独操作一起使用,或者您可以对正则表达式了解足够多的知识以将其合二为一。字符类是使用方括号定义的,使用正则表达式分隔符 [/?] 或 [/&?] 应该可以解决问题。我没有对此进行测试,因此您可能需要转义任何被认为是特殊的字符。

于 2014-02-07T22:28:59.157 回答
0

编辑单元格 > 基于此列添加列

substring(value, lastIndexOf(value, "/")+1, lastIndexOf(value, "?")+1)

上面的 GREL 得到一个介于 "/" 和 "?" 之间的子字符串。人物。它通过使用该lastIndexOf()函数获取定界字符的数字索引来工作。然后,这些索引用于substring()抓取字符串的中间部分。并+1添加到每个索引以微调哪些字符最终在子字符串中。

这将创建一个与示例 #1 中的中间列匹配的 OpenRefine 列。但它不会触及示例#2,它在“/”和“?”之间没有字符。您请求的中间列(例如#2)可以通过以下方式创建:

substring(value, lastIndexOf(value, "Article=")+8, lastIndexOf(value, "&"))

其他列可以使用子字符串函数的类似变体创建。完成后,您的数据将分布在各个列中,然后您可以根据需要将这些列重新组合在一起

于 2019-11-20T23:10:20.103 回答
0

我已经建立了一个 Excel 表格来做多达 15 个分隔符,如果你想查看我使用的原则,它们在表格中进行了解释

https://exeterhealth.libguides.com/ld.php?content_id=33701878

想知道这个级别的功能是否可以在openrefine中轻松实现......

英国德文郡大卫纽曼埃克塞特健康图书馆

于 2021-08-04T12:04:01.480 回答