Google使用多个分隔符将字符串拆分为多个列

时间:2014-02-07 18:04:33

标签: openrefine

我是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

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

/物品/ 烹饪的一年有6种方法让2014年的食物最好吗? affref =任何

第二个例子应分为三列:

/?文章= 年轻人看起来很好的老化5个技巧 &安培; affref = anotherwhatever

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

编辑列>基于此列添加列似乎是正确的,但我对正则表达式或GREL不太了解,以实现它。

非常感谢任何帮助。

感谢。

3 个答案:

答案 0 :(得分:0)

您可以使用两个单独的Split操作与不同的单独操作,或者您可以充分了解正则表达式,以便在一个中完成。字符类是使用方括号定义的,使用[/?]或[/&?]的正则表达式分隔符可以做到这一点。我没有对此进行测试,因此您可能需要转义任何被认为特殊的字符。

答案 1 :(得分: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, "&"))

可以在the substring function上创建具有类似变体的其他列。完成后,您的数据将散布在各个列中,然后您可以根据需要add back together

答案 2 :(得分:0)

我已经构建了一个 Excel 工作表来处理多达 15 个分隔符,如果您想查看我使用的原则,它们会在工作表上进行说明

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

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

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