Ich habe eine Zeichenfolge, die wie folgt aussieht:
str<-"a\f\r"
Ich versuche die Backslashes zu entfernen, aber nichts funktioniert:
gsub("\","",str, fixed=TRUE)
gsub("\\","",str)
gsub("(\)","",str)
gsub("([\])","",str)
... im Grunde alle Variationen, die man sich vorstellen kann. Ich habe sogar die string_replace_all
-Funktion ausprobiert. IRGENDEINE HILFE??
Ich verwende die R-Version 3.1.1. Mac OSX 10.7; Die Variable dput
für eine einzelne Zeichenfolge in meinem Vektor von Zeichenfolgen ergibt:
dput(line)
"ud83d\ude21\ud83d\udd2b"
Ich habe die Datei mit .__ importiert. readLines
von einem Standard .txt
datei. Der Inhalt der Datei sieht ungefähr 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 …
Vielen Dank.
Da es keine direkte Möglichkeit gibt, mit einzelnen Backslashes umzugehen, finden Sie hier die nächste Lösung für das Problem, die von David Arenburg in den Kommentaren bereitgestellt wird
gsub("[^A-Za-z0-9]", "", str) #remove all besides the alphabets & numbers
Bei der Eingabe von umgekehrten Schrägstrichen über die Tastatur sollten Sie diese immer entgehen.
str <-"this\\is\\my\\string" # note doubled backslashes -> 'this\is\my\string'
gsub("\\", "", str, fixed=TRUE) # ditto
str2 <- "a\\f\\r" # ditto -> 'a\f\r'
gsub("\\", "", str2, fixed=TRUE)# ditto
Beachten Sie das, wenn Sie dies tun
str <- "a\f\r"
dann enthält str
no Backslashes. Es besteht aus den 3 Zeichen a
, \f
(die normalerweise nicht druckbar sind, außer als \f
und \r
(gleich)).
Und um nur eine mögliche Frage abzulegen. Wenn Ihre Daten aus einer Datei gelesen wurden, muss die Datei keine umgekehrten Schrägstriche haben. Zum Beispiel, wenn Sie eine test.txt
-Datei haben
a\b\c\d\e\f
und du machst
str <- readLines("test.txt")
dann wird str
wie erwartet die Zeichenfolge a\b\c\d\e\f
enthalten: 6 Buchstaben, die durch 5 einzelne Backslashes voneinander getrennt sind. Sie müssen jedoch noch type doppelte Backslashes eingeben, wenn Sie damit arbeiten möchten.
str <- gsub("\\", "", str, fixed=TRUE) # now contains abcdef
Aus dput
sieht es aus, als hätten Sie dort UTF-16-kodierten Text, der wahrscheinlich von einem Windows-Computer stammt. Gemäß
es codiert Glyphen in der Supplementary Multilingual Plane , was ziemlich dunkel ist. Ich denke, Sie müssen das Argument encoding="UTF-16"
an readLines
übergeben, wenn Sie die Datei einlesen.
Das könnte hilfreich sein :)
require(stringi)
stri_escape_unicode("ala\\ma\\kota")
## [1] "ala\\\\ma\\\\kota"
stri_unescape_unicode("ala\\ ma\\ kota")
## [1] "ala ma kota"
Eine durchaus universelle Lösung ist
gsub("\\\\", "", str)
Danke für den Kommentar oben.
Dies ist die gleiche wie die akzeptierte Antwort, aber es werden weniger (nur Zeichen ohne ASCII-Zeichen) angezeigt:
gsub("[^ -~]", '', "a\f\r")
## [1] "a"