【发布时间】:2020-03-19 20:22:56
【问题描述】:
我在 R 中使用一个文本文件,并使用 readLine 函数和正则表达式从中提取单词。该文件在单词周围使用特殊字符(例如在单词之前和之后使用#sings 来表示它是粗体或在单词之前和之后使用@ 来表示它应该是斜体)来表示特殊含义,这会弄乱我的正则表达式。
到目前为止,这是我的 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] “这是一个普遍公认的真理,拥有好运的#single#男人一定想要一个妻子。然而鲜为人知的是这样一个@man@的感受或观点可能在他的第一个进入一个社区,这个事实在周围家庭的脑海中已经根深蒂固,@that@ 他被认为是#their# 女儿中某个或另一个的合法财产。
如何从更新后的变量中的单词中删除所有前导或尾随 # 或 @?
我想要的输出只是纯文本,没有指示应该加粗或斜体的单词:
更新 [1] “一个普遍公认的真理是,一个拥有好运的单身男人一定需要一个妻子。无论这样一个男人在他第一次进入社区时的感受或观点可能鲜为人知,这个事实在周围家庭的脑海中根深蒂固,以至于他被认为是他们的某个或其他女儿的合法财产。
【问题讨论】:
标签: r regex text-files special-characters gsub