在 OpenRefine 中删除大文本中某些行上的字符之前的所有内容

问题描述

我环顾四周,但没有找到答案。

我正在 OpenRefine 中清理大量文本。我想要做的是抑制包含特定字符(在本例中为 %.它看起来像这样:

...En trois mots,la bouffe lyonnaise,ça se résume à quoi?\n« Réconfortante,savoureuse,chaleureuse. » \n \nLa quenelle de brochet et sa sauce aux écrevisses %\nL'extra avec ça?\nLe Chef Viola concoctera une soupe géante et celle-ci sera partagee GRATUITEMENT le samedi 25 février 2017!敬请关注! \nLe bouchon lyonnais du Balmoral,去约会吧! \nMontréal en Lumière - volet gastronomie\n23 février au 11 mars 2016 \nLE BALMORAL\n514 288-5992

我正在寻找这样的结果(没有粗体):

...En trois mots,chaleureuse. » \n \n\nL'extra avec ça?\nLe Chef Viola concoctera une soupe géante et celle-ci sera partagee GRATUITEMENT le samedi 25 février 2017!敬请关注! \nLe bouchon lyonnais du Balmoral,去约会吧! \nMontréal en Lumière - volet gastronomie\n23 février au 11 mars 2016 \nLE BALMORAL\n514 288-5992

这,对于多篇文章中的许多情况。

不胜感激。

解决方法

我不确定 "\n" 是文字还是 LF 字符的表示,但我会假设是前者,如有必要,您可以调整公式。解决方案包括拆分行、遍历行并过滤包含 '%' 的行并再次连接这些行。在“编辑单元格 -> 变换”对话框中使用以下公式:

forEach(value.split('\\n'),l,if(l.contains('%'),'',l)).join('\\n')

分解:

  • value.split('\\n') 生成分割线数组
  • forEach(array,f) 遍历数组,将每一行分配给变量 l 并应用函数 f
  • if(l.contains('%'),l)) 如果 l 包含百分号 ('%') 则返回空字符串,否则返回原始字符串
  • array.join('\\n') 将过滤后的行重新连接在一起