Как заменить \r\n символов в текстовой строке конкретно в R
Для жизни я не могу удалить некоторые escape-символы из текстовой строки (до дальнейшей обработки). Я пробовал 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"!
Спасибо!
2 ответа
Не очень красиво, но это работает:
library(stringr)
str_remove_all(txt, "(?<=\\\\n)\\s+|\\s+(?=\\\")|\\\"|(?<=\\\"),|\\\\r(?=\\\\n)|(?<=\\\\r)\\\\n")
[1] "c(Stuff from a webpage: That I scraped using webcrawler)"
Я уверен, что есть более эффективные решения для регулярных выражений, но я просто использовал все возможности, которые вам не нужны.
Я также избавился от всех лишних "\", "," и пробелов.
Если вы просто хотите сопоставить результат, который вы опубликовали выше:
str_remove_all(txt, "\\\\r(?=\\\\n)|(?<=\\\\r)\\\\n")
Это читает удалить любой экземпляр \\r
с последующим \\n
или любой \\n
предшествует \\r
Рискнув ответить на мой собственный вопрос слишком быстро, я нашел обходной путь, который просто включает переключение "\" для редкого заполнителя, "__", а затем замену этого:
gsub('__r__n', '', gsub('[\\\\]', '__', txt))
... но было бы полезно поделиться лучшим решением "одного удара".