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?
Jetzt habe ich den Fließtext extrahiert:
%Vor%Allerdings kann ich dieses lästige bisschen Leerzeichen nicht entfernen!
%Vor%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.
Ich bin auf das gleiche Problem gestoßen und habe mich auf die einfache Ersetzung von
festgelegt %Vor%(Editiert, um den Fall zu korrigieren.)
Der  
steht für "non-breaking space", der im Unicode-Raum seinen eigenen Charakter aus einem "regulären" Raum hat (zB " "
). Vergleichen Sie
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%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:
(@ 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)
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)