关于在文本字符串中转义非字母字符,XML包似乎非常彻底.在XML或其他一些包中是否有一种简单的方法可以反转通过XML传递数据的部分/全部字符转义?我开始自己做,但在遇到像’代表JoaquÃÂnCastro’之类的案件后,他们认为’必须有一个更好的解决方案……’
为了清楚起见,使用XML包来解析此HTML
library(XML) apos_str <- c("<b>Tim O'Reilly</b>") apos_str.parsed <- htmlTreeParse(apos_str, error=function(...){}) apos_str.parsed$children$html[[1]][[1]]
会产生
<b>Tim O'Reilly</b>
理想情况下,我会喜欢搜索它的函数或包
'
然后把它变回来
'<b>Tim O'Reilly</b>'
编辑为了澄清,从下面的评论中,我得到了如何针对撇号的特定情况或我在数据中看到的任何其他字符执行此操作.我正在寻找的是一个包,有人更普遍地解决了这个问题.
到目前为止我做过的研究:
– 阅读我在逃避的XML documentation中可以找到的所有内容.
– 寻找CRAN NLP page上有前途的包装.
– 在SO上搜索’unescape [R]’和’reverse escape [R]’.
无法取得任何进展如此以为我会在这里提出问题.
?sub # the same help page will also discuss 'gsub' txt <- '<b>Tim O'Reilly</b>' sub("\\'", "'", txt) [1] "<b>Tim O'Reilly</b>"
如果您有“&”之间出现的值列表和“;”你可以分裂那些,然后重新组合.我想你有可能希望有人已经这样做了.您应该澄清您希望实现的抽象级别.
编辑:
博主讨论了“&”http://fishbowl.pastiche.org/2003/07/01/the_curse_of_apos/的具体情况
我已经做了一些自己的进一步研究.这些并不恰当地称为“逃逸”,而是“命名实体”.我在rhelp档案中找不到任何对它们的引用.我从w3.org网站下载了XML列表,定义了这些“enities”,并试图转换为支持搜索和替换的表格形式.但是你对’代表JoaquÃÂnCastro’的评论令我感到困惑.奇怪的字符不是“$#xxx”的形式,所以………..你究竟要求什么?请发布具有预期输出的合适测试用例.
编辑2:这是迈克尔友好的一个基本相同的问题,刚刚得到大卫卡尔森在瑞尔普的回答.这是Rhelp档案上发布的链接:
https://stat.ethz.ch/pipermail/r-help/2012-August/321478.html
他已经做了比创建翻译表更好的工作,并且已经包含了通过HTML文本进行游行的代码. (和奖金……他包括&). Michael Friendly的第二天跟进将这个过程包含在一个功能中.您可以点击“档案”页面上的链接.