Ersetzen einzelner backslash in R
Ich habe ein string der sieht so aus:
str<-"a\f\r"
Ich versuche zum entfernen der backslashes, aber nichts funktioniert:
gsub("\","",str, fixed=TRUE)
gsub("\\","",str)
gsub("(\)","",str)
gsub("([\])","",str)
...im Grunde alle Variationen, die Sie sich vorstellen können. Ich habe sogar versucht die string_replace_all
Funktion. KEINE HILFE??
Ich bin mit der R-version 3.1.1; Mac OS x 10.7; die dput
für einen einzelnen string in meine vector von strings gibt:
dput(line)
"ud83d\ude21\ud83d\udd2b"
Ich importierte die Datei mit
readLines
vom standard
.txt
- Datei. Der Inhalt der Datei sieht etwa so aus:
got an engineer booked for this afternoon \ud83d\udc4d all now hopefully sorted\ud83d\ude0a I m going to go insane ud83d\ude21\ud83d\udd2b in utf8towcs …
Dank.
- im Zusammenhang stackoverflow.com/questions/11806501/backslash-in-r-string
- es ist nicht ganz das gleiche problem. Ich habe gearbeitet der Umgang mit doppelten Schrägstrichen, aber ich konnte nicht finden Lösungen für die einzelnen Schrägstriche an alle.
str<-"this\is\my\string"
der nicht gelesen werden kann in R, weil\i
,\m
und\s
gespeichert sind Buchstaben, regex, so dass Ihr Beispiel nicht reproduzierbar (und verwirrend). Sie ändern könnte, um so etwas wiestr <- "a\f\r"
- okay werde ich tun
- Nicht enthalten keine backslashes entweder. Sie müssen Ihnen zu entkommen, wenn Sie Sie die Eingabe von der Tastatur:
str <- "a\\f\\r"
- Habe ich gelöscht meine Antwort die angesprochen, die original-version der Frage.
- scheint, wie die Dritte genau die gleiche Antwort war einfach nur gepostet...
- Ich bin mir nicht sicher über das edit zu dem post. Ich denke, wir sollten es lassen, um die OP zu klären, ob es "dies\\ist\\eigene\\string" oder "a\f\r", wie David vorgeschlagen.
- Ich habe rollte es zurück zum original.
- wie von David vorgeschlagen, "a\f\r" all I tun wollen ist, entfernen Sie die Stopfen, einfache umgekehrte Schrägstriche
- Sie haben, vorsichtig zu sein. Wenn Sie möchten, um eine Zeichenfolge mit einem backslash zu können, geben Sie zwei umgekehrte Schrägstriche, da \ ein Sonderzeichen in R-parser. Zum Beispiel
str <- "a\\f\\r"
enthält den string'a\f\r'
(zwei einzelne umgekehrte Schrägstriche). Umgekehrtstr <- "a\f\r"
enthält keine backslashes: es hat 3 Zeichen,a
,\f
und\r
. - aber ich glaube nicht, dass ein string, der enthalten backslashes in den ersten Platz. Ich habe gerade einen verhunzten text-dataset, das ich bin versucht zu bereinigen, und es hat alle sords seltsamen Zeichen drin. Ich nehme ihn gibt es KEINEN Weg, um mit einzelnen backslashes dann?
- Siehe meine bearbeitete Antwort.
- Es klingt wie Ihr problem ist eigentlich nicht das umgekehrte, aber entstellten text-Codierung. Wenn R auf einen Charakter es nicht weiß, wie Sie zu drucken, werden Sie sehen, viele backslashes über den Ort, die Vertretung hex-codes. Post eine tatsächliche Stichprobe von code und Daten, die Verwendung von
dput
. - okay, aber was ist dput? sorry
- Sehen
?dput
. Es gibt etwas, dass Sie können Ausschneiden und einfügen in das Bearbeiten-Fenster hier auf StackOverflow, wird zeigen, dass R die interne Darstellung Ihrer Daten. - dput(line) gibt "ud83d\ude21\ud83d\udd2b", wo die Linie ist der name von meinem string
- Setzen Sie, dass in Ihrer Frage, zusammen mit dem code, den Sie verwenden, die Datei zu Lesen und die OS, die Sie verwenden. Jeder
\uXXXX
repräsentiert ein Unicode-Zeichen, die R nicht wissen, wie zu handhaben Ihre locale/Codierung. - vielen Dank, fertig!
- Können Sie auch ein fragment der Datei, die Sie gerade Lesen, und den code, den Sie verwenden, um es zu Lesen mit?
- Es scheint, wie Sie haben viele gebberish gibt, versuchen
gsub("[^A-Za-z0-9]", "", "ud83d\ude21\ud83d\udd2b")
vielleicht? - dort gehen Sie. Dank
- es arbeitet david aber nur der erste Teil der Zeichenkette zurückgegeben "ud83d"
utf8towcs
... du bist nicht die Arbeit mit funky Fremdsprachen sind Sie?- Ja, das sieht aus wie ein encoding-Problem zu mir.
- Kannst du die Datei hochladen irgendwo? Es sieht aus wie, was-editor, du Klebst es von bereits eingeschaltet hat, die seltsamen Zeichen in
\xxxx
form. - haha Neeein Ihr alle Englisch 🙂 eigentlich david ' s Idee, zu versuchen zu ersetzen, alles, was neben den standard-Alphabete hat das Potenzial, zu arbeiten, aber für jetzt seine nicht zu tun genau das, was sein soll zu tun
- Richtig, das ist, weil jeder
\uXXXX
ist tatsächlich ein Zeichen. - ein Zeichen? oh ja, jetzt sehe ich... ich denke, das problem ist dann gelöst, ich verwende gsub("[^A-Za-z0-9]", "", "ud83d\ude21\ud83d\udd2b") vielen Dank, Hong weißt du, wie mark einen Kommentar als Antwort? so dass vielleicht andere es nützlich finden?
- Wie ich schon sagte - es ist ein encoding-Problem 😉
- ja ist es, bin froh, dass das jetzt vorbei waren, für die letzten 6 Stunden. vielen Dank an alle, die beigetragen haben
Du musst angemeldet sein, um einen Kommentar abzugeben.
Backslashes bei der Eingabe von der Tastatur, immer entkommen.
Beachten Sie, dass wenn Sie
dann
str
enthält keine backslashes. Es besteht aus den 3 Zeichena
,\f
(die normalerweise nicht gedruckt werden, ausgenommen als\f
, und\r
(gleichen).Und gerade, den Kopf ab, eine mögliche Frage. Wenn Ihre Daten aus einer Datei gelesen, die Datei nicht haben, um backslashes verdoppelt. Zum Beispiel, wenn Sie eine Datei
test.txt
mitund Sie tun
dann
str
wird die Zeichenfolge enthaltena\b\c\d\e\f
wie man es erwarten würde: 6 Buchstaben, getrennt durch 5 einfache umgekehrte Schrägstriche. Aber Sie haben noch Typ verdoppelt umgekehrte Schrägstriche, wenn Sie mit ihm arbeiten wollen.Aus der
dput
, es sieht aus wie, was du hast, es ist UTF-16-codierten text, der kam wohl von einer Windows-Maschine. Naches kodiert für die Glyphen in der Ergänzende Mehrsprachige Ebene, das ist ziemlich undurchsichtig. Ich werde erraten, dass Sie brauchen, um zu liefern das argument
encoding="UTF-16"
zureadLines
wenn Sie Lesen Sie in der Datei.str<-"a\f\r"
string, nichtstr <-"this\\is\\my\\string"
str <- "this\is\my\string"
. Dies ist nicht etwas Sie können in R über die Tastatur. Wenn es gemeint war, zu repräsentieren, string"this\is\my\string"
, Sie haben zu entkommen den backslashes.str <- "a\f\r"
, der OP hat. Die Fehler-Ursache war nicht, weil die umgekehrten Schrägstriche, sondern wegen der\i
,\m
und\s
Dieser hilfreich sein könnten 🙂
Einer sehr universellen Lösung ist
Dank zu den Kommentar oben.
Da es keine direkten Wege zum Umgang mit einzelnen umgekehrten Schrägstriche, hier ist die nächste Lösung für das problem, wie es von David Arenburg in den Kommentaren
Dies ist die gleiche wie die akzeptierte Antwort, aber rtemoves weniger (nur nicht-ascii-Zeichen):