问题描述
我环顾四周,但没有找到答案。
我正在 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')
将过滤后的行重新连接在一起