2013-09-03 1 views
1

мне нужно заменить следующие символы с регулярными выражениями (GSUB):Как заменить с регулярными выражениями символов, генерируемого путем кодирования ошибок при встраивании в тексте

ÃÆè -> è ÃÆà-> à ÃÆò -> ò ÃÆì - > Я ÃÆÃù -> ù

Моя стратегия сначала удалить первые три символа ÃÆÃ, которые являются общими для всех, и двигаться к последнему, оставив à в конце, так как это в основном самый низкий общий знаменатель. Теперь gsub правильно удаляет первые три, но затем он швы не видит конечных, например ¨ - но я заметил, что он видит ñ (для -).

При копировании/вставке символов в текстовый редактор я заметил, что они вызывают странные поведения (например, перемещение курсора вперед на несколько позиций).

Мой набор данных был загружен с веб-сайта, который сам по себе имеет проблемы с кодированием для самых старых страниц, но не для самых последних (я думаю, что они исправляли проблему кодирования за последние годы). Посещая самые старые страницы, вы все равно можете видеть то же самое на виду. Тогда проблема не (я предполагаю) в кодировке моего файла.

Т.е. ошибки кодирования ограничены областями набора данных и не являются результатом проблемы с кодировкой всего текстового корпуса.

+0

Это проблема с кодировкой, а не проблема с регулярным выражением. – Blender

+0

Вы можете использовать кодировку для преобразовать их в UTF-8: кодирование (ваша строка) <- "UTF-8" – Bangyou

+0

Я пробовал кодирование (x) .Не работал. См. мои правки. – CptNemo

ответ

1

Проблема, когда символы отображаются неправильно, заключается в том, чтобы точно понять, как они анализируются регулярным выражением. В моем случае, как объяснено, ошибки кодирования, где ограничено несколькими строками в моем наборе данных. Тогда Encoding() не применимо.

Я решил проблему, визуализируя проблемные символы непосредственно в консоли R. В консоли они выглядят как Ã\u0083Æ\u0092Ã\u0082¨, а в R-studio они были визуализированы как Ã Æ Ã Â¨. То, что визуализировалось в консоли, было то, что мне нужно для правильного совпадения с регулярным выражением: gsub («Ã \ u0083Æ \ u0092à \ u0082¨» ...