parsing html, das nicht brechenden Platz enthält

8

Ich verwende rvest , um eine Website zu analysieren. Ich stoße mit diesen kleinen, schussfreien Räumen gegen eine Wand. Wie entfernt man den Whitespace, der vom Element   in einem geparsten HTML-Dokument erzeugt wird?

%Vor%

Jetzt habe ich den Fließtext extrahiert:

%Vor%

Allerdings kann ich dieses lästige bisschen Leerzeichen nicht entfernen!

%Vor%     
AndrewMacDonald 01.12.2014, 21:01
quelle

6 Antworten

7

jdharrison antwortete:

%Vor%

und das wird funktionieren, aber Sie können verwenden:

%Vor%

wodurch alle Space characters: tab, newline, vertical tab, form feed, carriage return, space and possibly other locale-dependent characters entfernt werden. Es ist eine sehr lesbare Alternative zu anderen, kryptischen Regex-Klassen.

    
hrbrmstr 01.12.2014 21:20
quelle
7

Ich bin auf das gleiche Problem gestoßen und habe mich auf die einfache Ersetzung von

festgelegt %Vor%

(Editiert, um den Fall zu korrigieren.)

    
shabbychef 30.09.2015 23:42
quelle
3

Der &nbsp steht für "non-breaking space", der im Unicode-Raum seinen eigenen Charakter aus einem "regulären" Raum hat (zB " " ). Vergleichen Sie

%Vor%

Sie sollten also eine der Sonderzeichenklassen für Leerraum verwenden. Sie können alle Leerstellen mit

entfernen %Vor%

Unter Windows musste ich sicherstellen, dass die Codierung der Zeichenfolge korrekt festgelegt wurde

%Vor%     
MrFlick 01.12.2014 21:10
quelle
2

Dies zu veröffentlichen, da ich denke, dass es der robusteste Ansatz ist.

Ich habe eine Wikipedia-Seite ausgekratzt und diese in meine Ausgabe aufgenommen (nicht sicher, ob sie richtig kopiert und eingefügt wird):

%Vor%

Und gsub("\s", "", x) hat nichts geändert, was die Flagge, dass etwas faul ist, ausgelöst hat.

Um zu untersuchen, habe ich:

%Vor%

Um herauszufinden, wie genau dieses Zeichen im Speicher gespeichert / erkannt wird.

Damit können wir gsub etwas robuster als in den anderen Lösungen verwenden:

%Vor%

(@ MrFlicks Vorschlag, die Kodierung einzustellen, hat bei mir nicht funktioniert, und es ist nicht klar, wo @shabbychef die Eingabe 160 für intToUtf8 hat; dieser Ansatz kann auf andere ähnliche Situationen verallgemeinert werden)

    
MichaelChirico 24.02.2016 18:53
quelle
0

Die Verwendung von rex kann diese Art von Aufgabe ein wenig vereinfachen. Ich bin auch nicht in der Lage, Ihre Codierung Probleme zu reproduzieren, die folgenden korrekt ersetzt den Speicherplatz unabhängig von der Codierung auf meinem Computer. (Es ist die gleiche Lösung wie [[:space:]] , hat aber wahrscheinlich das gleiche Problem für Sie)

%Vor%     
Jim 04.12.2014 13:13
quelle
0

Ich konnte   Leerzeichen am Anfang und Ende von Strings mit mystring %>% stringr::str_trim() entfernen.

    
jtr13 25.07.2017 15:38
quelle

Tags und Links