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

Delete everything before a character on certain lines in a large text in OpenRefine

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

我正在 OpenRefine 中清理大量文本。我正在尝试做的是抑制包含 specific 字符的行(\n)两端之间的行,在本例中为 %。看起来像这样:

...用三个词来说,里昂的食物到底是什么?\n“舒适、美味、温暖。 » \n \n梭子鱼肉饼和小龙虾酱 %\n额外的吗?\n主厨 Viola 会调制一碗大汤,这个 ci 将在星期六免费分享, 2017 年 2 月 25 日!敬请关注! \nBalmoral 的里昂软木塞是约会对象! \nMontréal en Lumière - section gastronomie\n23 2016 年 2 月至 3 月 11 日\nLE BALMORAL\n514 288-5992

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

...用三个词来说,里昂的食物到底是什么?\n“舒适、美味、温暖。 \n \n\nL还有额外的吗?\n主厨 Viola 将烹制一碗大汤,这道 ci 将于 2017 年 2 月 25 日星期六免费分享!敬请关注! \nBalmoral 的里昂软木塞是约会对象! \nMontréal en Lumière - section gastronomie\n23 2016 年 2 月至 3 月 11 日\nLE BALMORAL\n514 288-5992

这在多个文本中有很多实例。

将不胜感激ci。

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

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

分解:

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