Удалить пробелы перед скобкой » (» в R

#r #regex #whitespace #gsub #space

#r #регулярное выражение #пробелы #gsub #Космос

Вопрос:

У меня есть почти 100 000 строк очищенных данных, которые я преобразовал в фреймы данных. Один столбец представляет собой строку текстовых символов, но работает странно. В приведенном ниже примере есть текст, заключенный в квадратные скобки, информацию, которую я хочу удалить, и я также хочу удалить «(c)». Однако пробел впереди технически не является пробелом (считается ли он пробелом?).

Я не уверен, как воспроизвести пример здесь, потому что, когда я копирую / вставляю запись, она обрабатывается как обычная и работает, но в очищенных данных это не так. Проверка кишки заключалась в подсчете пробелов, и она дала мне 4, что означает, что пробел перед ( не является истинным пробелом. Я не знаю, как это удалить!

Мой код, который я обычно запускаю, выглядит следующим образом. Опять же, работает таким образом, но не работает в моих очищенных данных.

 test<-c("Barry Windham (c) amp; Mike Rotundo (c)")
test<-gsub("[ ][(]c[)]","",test)
  

Комментарии:

1. Работает ли это "\s\(c\)" ?

2. Итак, каков ожидаемый результат? Barry Windham(c) amp; Mike Rotundo(c) или Barry Windham amp; Mike Rotundo ?

Ответ №1:

Вы можете рассмотреть возможность использования:

 test<-c("Barry Windham (c) amp; Mike Rotundo (c)")
gsub("(*UCP)\s \(c\)", "", test, perl=TRUE)
# => [1] "Barry Windham amp; Mike Rotundo"
  

Смотрите онлайн-демонстрацию R

Подробные сведения

  • (*UCP) — поддерживает все классы сокращенных символов в регулярном выражении PCRE (это PCRE из-за perl=TRUE ) Unicode
  • \s — любые один или несколько пробелов в Юникоде
  • \(c\) (c) подстрока.

Если вам нужно сохранить (c) , запишите его и используйте обратную ссылку при замене:

 gsub("(*UCP)\s (\(c\))", "\1", test, perl=TRUE)
  

Комментарии:

1. Это выглядит хорошо, спасибо! Он избавился от пробела впереди, и как бы мне настроить его, чтобы также избавиться от (c) вместе с ним?

2.@KevS gsub("(*UCP)\s \(c\)", "", test, perl=TRUE) удаляет пробелы и. (c)

3. Это сделало это, большое вам спасибо! Извините, если я пропустил часть деталей, и вы уже ответили на мои последующие действия. Еще раз спасибо