【问题标题】:Pattern Matching in OpenRefine JSONOpenRefine JSON 中的模式匹配
【发布时间】:2021-02-26 00:23:43
【问题描述】:

喜欢 OpenRefine 以及它的易用性,刚刚研究了 Extract / Apply 位,这对于我使用 OpenRefine 的用途非常有用。我希望它能够使用通配符来匹配应用部分中的模式。

所以在下面的示例中,我有一个名为 Cluster 的新列,其中有一些项目将是

Test
This is a test title
Test 123
123 Test

如何匹配这些并将单元格设置为测试标题,请注意文本有时可能类似于 1435365736 测试标题。它不会总是有相同的开始和结束,但会在标题中有测试。

我试过 ./?test./?还有asterix围绕测试,均无济于事,不胜感激。

{
"op": "core/mass-edit",
"engineConfig": {
  "facets": [
    {
      "type": "text",
      "name": "Cluster",
      "columnName": "Cluster",
      "query": "test",
      "mode": "text",
      "caseSensitive": false,
      "invert": false
    }
  ],
  "mode": "row-based"
},
"columnName": "Title_Cluster",
"expression": "value",
"edits": [
  {
    "from": [
      "This is a test title"
    ],
    "fromBlank": false,
    "fromError": false,
    "to": "Test Titles"
  }
],
"description": "Mass edit cells in column Title_Cluster"

}

【问题讨论】:

    标签: openrefine


    【解决方案1】:

    首先,我需要警告您,提取操作/应用操作工具尚未完全开发,如果用于原始数据以外的任何内容,则存在许多限制。

    最终被记录为mass-edit 的任何内容都不太可能对重播不同的数据有用。对于这个用例,我建议使用 replace 之类的函数和正则表达式模式作为要替换的字符串,例如:

    value.replace(/.*[Tt]est.*/,'Test Titles')
    

    value.replace(/.*test.*/i,'Test Titles')
    

    i 标志告诉正则表达式忽略大小写,方括号括起一组允许的字符。

    【讨论】:

    • 感谢 Tom 的反馈,所以我认为这不会在提取操作/应用操作设施区域中完成,而是在列本身上完成?
    • 正确,但验证它在提取操作区域中显示为包含正则表达式的离散命令,而不是 mass-edit 操作,它不能转移到其他项目(它只需将所有选定行中的单元格设置为给定值)。
    • Tom,谢谢你,是否可以同时运行多个 value.replace 命令?会不会是 value.replace(/.*test.*/i,'Test Titles'),(/.*city.*/i,'City Titles')
    • 关闭。您需要重复函数名称value.replace(/.*test.*/i,'Test Titles').replace(/.*city.*/i,'City Titles')。您可以像这样链接任意数量的函数。如果这样更容易,您也可以在连续操作中执行它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2011-02-03
    相关资源
    最近更新 更多