Как удалить все специальные символы из строки в R и заменить их пробелами?
Некоторые специальные символы, которые следует удалить: ~!@#$%^&*(){}_+:"<>?,./;'[]-=
Я пробовал regex
с [:punct:]
шаблоном, но он удаляет только знаки препинания.
Вопрос 2: А как убрать символы из иностранных языков типа â í ü Â á ą ę ś ć
:?
Ответ: Используйте [^[:alnum:]]
для удаления ~!@#$%^&*(){}_+:"<>?,./;'[]-=
и используйте [^a-zA-Z0-9]
для удаления также â í ü Â á ą ę ś ć
в функциях regex
или regexpr
.
sub
илиgsub
функции.Ответы:
Вам нужно использовать регулярные выражения для выявления нежелательных символов. Для наиболее легко читаемого кода вы хотите получить код
str_replace_all
изstringr
пакета, хотяgsub
базовый R работает так же хорошо.Точное регулярное выражение зависит от того, что вы пытаетесь сделать. Вы можете просто удалить те конкретные символы, которые вы указали в вопросе, но гораздо проще удалить все символы пунктуации.
(Базовый R эквивалент
gsub("[[:punct:]]", " ", x)
.)Альтернативой является замена всех не буквенно-цифровых символов.
Обратите внимание, что определение того, что представляет собой буква, число или знак пунктуации, немного варьируется в зависимости от вашего языка, поэтому вам, возможно, придется немного поэкспериментировать, чтобы получить именно то, что вы хотите.
источник
" "
с""
иначе у вас есть пустое белое пространство в строке.â í ü Â á
??regex
и?regexpr
.[^[:alnum:]]
на[^a-zA-Z0-9]
или, возможно\\W
.Вместо использования регулярного выражения для удаления этих «сумасшедших» символов просто преобразуйте их в ASCII, который удалит акценты, но сохранит буквы.
что приводит к
источник
iconv(astr, from="UFT-8", to="ASCII//TRANSLIT")
, а то с французскими иероглифами вродеç
получается немного смешно.Преобразуйте специальные символы в апостроф,
Код ниже, чтобы удалить лишний апостроф
Используйте
gsub(..)
функцию для замены специального символа апострофомисточник