как заменить одиночную обратную косую черту в R

У меня есть строка, которая выглядит так:

str<-"a\f\r" 

Я пытаюсь удалить обратную косую черту, но ничего не работает:

 gsub("\","",str, fixed=TRUE) gsub("\\","",str) gsub("(\)","",str) gsub("([\])","",str) 

… в основном все варианты, которые вы можете себе представить. Я даже попробовал функцию string_replace_all . ЛЮБАЯ ПОМОЩЬ??

Я использую R 3.1.1; Mac OSX 10.7; dput для одной строки в моем векторе строк дает:

 dput(line) "ud83d\ude21\ud83d\udd2b" 

Я импортировал файл, используя readLines из стандартного .txt файла. Содержимое файла выглядит примерно так: got an engineer booked for this afternoon \ud83d\udc4d all now hopefully sorted\ud83d\ude0a I m going to go insane ud83d\ude21\ud83d\udd2b in utf8towcs …

Благодарю.

Когда вы вводите обратную косую черту с клавиатуры, всегда избегайте их.

 str <-"this\\is\\my\\string" # note doubled backslashes -> 'this\is\my\string' gsub("\\", "", str, fixed=TRUE) # ditto str2 <- "a\\f\\r" # ditto -> 'a\f\r' gsub("\\", "", str2, fixed=TRUE)# ditto 

Обратите внимание: если вы это сделаете

 str <- "a\f\r" 

то str содержит обратных косых черт. Он состоит из 3 символов a , \f (который обычно не печатается, кроме как \f и \r (тот же).

И просто чтобы ответить на вопрос. Если ваши данные были прочитаны из файла, файл не должен иметь удвоенную обратную косую черту. Например, если у вас есть файл test.txt содержащий

 a\b\c\d\e\f 

и вы делаете

 str <- readLines("test.txt") 

то str будет содержать строку a\b\c\d\e\f как и следовало ожидать: 6 букв, разделенных 5 одиночными обратными косыми чертами. Но вам все равно придется вводить двойную обратную косую черту, если вы хотите работать с ней.

 str <- gsub("\\", "", str, fixed=TRUE) # now contains abcdef 

Из dput , похоже, что у вас есть кодированный текст UTF-16, который, вероятно, поступает с Windows-машины. В соответствии с

он кодирует глифы в дополнительной многоязычной плоскости , что довольно неясно. Я предполагаю, что вам нужно предоставить аргумент encoding="UTF-16" для readLines при чтении в файле.

Это может быть полезно 🙂

 require(stringi) stri_escape_unicode("ala\\ma\\kota") ## [1] "ala\\\\ma\\\\kota" stri_unescape_unicode("ala\\ ma\\ kota") ## [1] "ala ma kota" 

Поскольку нет прямых способов борьбы с одиночными обратными косыми чертами, вот самое близкое решение проблемы, которое дает Дэвид Аренбург в разделе комментариев

 gsub("[^A-Za-z0-9]", "", str) #remove all besides the alphabets & numbers 

Одно вполне универсальное решение

 gsub("\\\\", "", str) 

Спасибо за комментарий выше.

Это то же самое, что и принятый ответ, но меньше (просто символы не-ascii):

 gsub("[^ -~]", '', "a\f\r") ## [1] "a" 

вы можете использовать str_replace_all (str, “\\” “/”) после добавления еще одной обратной косой черты как “a \ f \ r”

  • Как заменить символы новой строки с помощью JSP и JSTL?
  • Заменить динамический контент в XML-файле
  • как заменить несколько строк в Oracle
  • Заменить строку в файле с помощью nodejs
  • Поиск замещения регулярного выражения в Sublime Text 2
  • Замена заметок в Vim
  • Строка, не заменяющая символы
  • Есть ли альтернатива string.Replace, которая не чувствительна к регистру?
  • Как использовать разные разделители для команды sed substitute?
  • Строка заменит обратную косую черту
  • Замена строки в текстовом файле Java
  • Interesting Posts

    Миллионы 3D-точек: как найти 10 из них ближе всего к данной точке?

    напечатать имя переменной в Matlab

    Внутренний class и локальные переменные

    Является ли String Literal Pool набор ссылок на объект String или набор объектов

    Отсутствующие вставки специальных опций в Excel 2010

    Как редактировать атрибуты / данные различных столбцов в представлении сведений о проводнике Windows

    std :: значение по умолчанию для карты

    Выберите случайный элемент из массива

    Dropbox работает медленно и загружает только часть скорости загрузки

    «Большой тип» на Mac, например, в приложении адресной книги

    BitmapImage в WPF блокирует файл

    В чем причина жесткого диска, который страдает от щелчка?

    Android: хронометр как постоянный секундомер. Как установить время начала? Что такое хронометр «База»?

    Несоответствие между процессором «top» и процентом использования процессора

    Значения наведения JavaFX LineChart

    Давайте будем гением компьютера.