【问题标题】:Google Refine split string into multiple columns using multiple separators谷歌使用多个分隔符将字符串拆分为多列
【发布时间】:2014-02-07 18:04:32
【问题描述】:

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

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

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

任何帮助将不胜感激。

谢谢。

【问题讨论】:

    标签: openrefine


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      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。

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多