删除R中文本文件中的特殊字符

问题描述 投票:0回答:1

我在R中使用文本文件,并使用readLine函数和正则表达式从中提取单词。该文件在单词周围使用特殊字符(例如,在单词之前和之后的#唱歌表示粗体,或者在单词之前和之后的@唱歌表示斜体)以表示特殊含义,这使我的正则表达式感到困惑。

到目前为止,这是我的r代码,该代码删除了所有空行,然后将我的文本文件合并为一个向量:

    book<-readLines("/Users/Desktop/SAMPLE .txt",encoding="UTF-8")
    #remove all empty lines
    empty_lines = grepl('^\\s*$', book)
    book = book[! empty_lines]
    #combine book into one variable
    xBook = paste(book, collapse = '')
    #remove extra white spaces for a single text of the entire book
    updated<-trimws(gsub("\\s+"," ",xBook))

当我运行更新时,我看到存储在更新后的变量中但带有特殊字符的整个文件:

已更新[1]“众所周知,一个拥有好运的单身男人一定要缺少妻子,这是一个普遍的事实。然而,对这种@ man @的感受或看法可能鲜为人知。进入一个社区,这个真理在周围家庭的脑海中被牢牢地固定住了,@ that @他被认为是#their#的一个或另一个女儿的合法财产。

如何从更新后的变量中删除所有开头或结尾的#或@?

我想要的输出只是纯文本,没有表明应该用粗体或斜体显示的单词:

已更新[1]“公认拥有一个好运的单身男人一定要缺少妻子,这是一个普遍公认的事实。然而,鲜为人知的是,这种男人的情感或观点可能是他第一次进入邻居时,这个真理在周围家庭的思想中牢牢地固定住了,以至于他被认为是其中一个或另一个女儿的应有财产。

r regex text-files special-characters gsub
1个回答
0
投票
gsub("[@#]([a-zA-Z]+)[@#]", "\\1", x)
© www.soinside.com 2019 - 2024. All rights reserved.