如何在 R 中专门替换文本字符串中的 \r\n 个字符

How to replace \r\n characters in a text string specifically in R

我这辈子都无法从文本字符串中删除一些转义字符(在进一步处理之前)。我试过 stringi、gsub,但我就是无法获得正确的语法。

这是我的文本字符串

txt <- "c(\"\r\n    Stuff from a webpage: That I scraped using webcrawler\r\n\", \"\r\n        \", \"\r\n        \", \"\r\n        \", \"\r\n\r\n        \", \"\r\n\r\n        \", \"\r\n        \r\n    \", \"\r\n    \")"

我想从这个字符串中删除“\\r\\n”。

我试过了

gsub("[\\r\\n]", "", txt)  (leaves me with "rn")
gsub("[\r\n]", "", txt)    (leaves me without ANY r or n in the text)
gsub("[\r\n]", "", txt)      (strips nothing)

如何删除这些字符?请记住,这将需要处理其他条目,这些条目可能有以 "rn" 结尾的正常单词或中间某处有 "rn"!

谢谢!

冒着过快回答我自己的问题的风险,我找到了一个 bodge 解决方法,它只需将“\”换成罕见的占位符“__”,然后替换它:

gsub('__r__n', '', gsub('[\\]', '__', txt))

...但我认为分享更好的 "one hit" 解决方案会很有价值。

不是很漂亮,但这很有效:

library(stringr)
str_remove_all(txt, "(?<=\\n)\s+|\s+(?=\\")|\\"|(?<=\\"),|\\r(?=\\n)|(?<=\\r)\\n")
[1] "c(Stuff from a webpage: That I scraped using webcrawler)"

我确信有更高效的正则表达式解决方案,但我只是向它提供了您不想要的所有可能性。

我也去掉了所有多余的“\”、“,”和白色 space。

如果您只想匹配上面发布的结果:

str_remove_all(txt, "\\r(?=\\n)|(?<=\\r)\\n")

这将删除 \r 后跟 \n 或任何 \n 前跟 \r

的任何实例