Как удалить пустую строку ("") в строке

Я столкнулся со странной проблемой при просмотре веб-страниц с помощью rvest.

Я нацарапал следующее имя: "Ab­dich­ter/in EFZ", которое сначала выглядело нормально. Однако, когда я записал файл в csv, я обнаружил «-» между буквами. В Excel это слово выглядело так: Ab-­dich-ter/in EFZ.

Итак, я сделал str_split(x, "") и обнаружил, что строка на самом деле выглядит так:

c("A", "b", "­", "d", "i", "c", "h", "­", "t", "e", "r", "/", "i", "n", " ", "E", "F", "Z")

Я попытался получить пустые строки из строки, но мне это не удалось. Я старался:

my_string <- str_split(my_string , "")

а потом

paste0(my_string[my_string != ""])

но это не помогло.

Поэтому мне интересно:

  1. Как пустые строки попали в эту строку, и
  2. как мне вытащить его снова.

Редактировать: это страница в Интернете.

И вот как я получил строку:

library(rvest)

read_html("https://berufskunde.com/ausbildungsberufe/ausbildung-abdichter.html", encoding = "UTF-8") %>% 
  html_nodes(".section") %>% 
  html_nodes(".text-rot") %>% 
  html_text()

Попробуйте с x[nzchar(x)]

akrun 17.07.2019 15:34

@akrun, спасибо. Но это не работает.

Roccer 17.07.2019 15:36

Я думаю, что у вашего "" другой характер. Вам может понадобиться v1[trimws(v1) != "­"] Здесь 'v1' - это разделенный вектор символов.

akrun 17.07.2019 15:38

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

meh 17.07.2019 15:41

Нет, это не космический символ.

Roccer 17.07.2019 15:42

вы можете попробовать x[grepl("[[:alnum:]]|/", x)] Он возвращает все элементы, которые содержат букву или цифру плюс косую черту.

Grada Gukovic 17.07.2019 15:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
6
172
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Строка, которую вы наблюдаете, — это не пустая строка, а символ МЯГКИЙ ДЕФЕС (U+00AD). Предполагается, что он отображается только тогда, когда слово разбито на строки, но некоторые редакторы не справляются с этим правильно, поэтому он, вероятно, отображается при просмотре CSV.

В любом случае вы, вероятно, захотите удалить его из своей строки:

str = gsub('\U00AD', '', str)

@Roccer Если вы знаете о поведении этого символа мягкого дефиса, ваше описание, скорее всего, так и было. И поскольку вы разместили воспроизводимый пример (отлично!), это было легко проверить. Для справки, также может помочь проверить значения байтов строки через charToRaw, но это помогает, только если вы знаете, что искать.

Konrad Rudolph 17.07.2019 15:55

Другие вопросы по теме