2017-02-15 6 views
0

nehme ich eine Zeichenfolge, die die folgenden Zeichen hatmit gsub Funktion in r entfernen slash

"\"------------080209060700030309080805\"" 

Und jetzt bin gsub Funktion in r verwenden möchten, das „\ und \“ Teil zu entfernen, und nur Behalte die folgenden Zeichen:

"------------080209060700030309080805\" 

Könnte jemand mir helfen, herauszufinden, wie ich es richtig machen sollte?

+1

' "------------ 080209060700030309080805 \"' als Ergebnis sieht aus wie ein Tippfehler: Do y Möchten Sie wirklich, dass der letzte Backslash Teil Ihres Ergebnisses ist? Bitte bearbeiten Sie Ihre Antwort ... –

+0

Bitte zeigen Sie uns im Klartext, was die Eingabe und Ausgabe sein soll. Mach dir keine Sorgen über die Flucht in R. –

+0

Die Eingabe hier ist genau sieht so aus: "\" ------------ 080209060700030309080805 \ "", das ist eigentlich von einer E-Mail-Spam/ham Daten aus einem Data Science Buch. Und ich möchte gsub Funktion verwenden, um nur den "------------ 080209060700030309080805" Teil zu ergreifen, was bedeutet, dass ich den Schrägstrich hier loswerden möchte, aber derzeit scheint es, dass ich nicht habe ein guter Weg, dies zu tun. – tql66

Antwort

1
string <- "\\------------080209060700030309080805\\" 
string <- gsub("^\\\\(.*)\\\\$", "\\1", string) 

Weitere Informationen: Das Muster, das ich verwendete ^\(.*)\$, was alles zwischen einem Anfang übereinstimmen und Backslash. Dies würde nur Zeichenfolgen entsprechen, die beide mit Backslash beginnen und enden. Außerdem verwenden wir vier Backslashes (\\\\), um einen literalen Backslash für das Muster in gsub() darzustellen. Wir müssen zweimal entkommen, einmal für R und ein zweites Mal für die Regex-Engine.

4

Edit 1: Fehler behoben (zwei Schrägstriche erforderlich, um einen umgekehrten Schrägstrich in einem String erstellen): in

s <- '\\"------------080209060700030309080805\\"' 
s 
gsub('\\"', "", s, fixed = TRUE) 

Ergebnisse

> s <- '\\"------------080209060700030309080805\\"' 
> s 
[1] "\\\"------------080209060700030309080805\\\"" 
> gsub('\\"', "", s, fixed = TRUE) 
[1] "------------080209060700030309080805" 

Bitte beachten Sie, dass ein einzelner Schrägstrich in R das ist Escape-Code, der NICHT Teil der Zeichenfolge ist:

> charToRaw('\\"') 
[1] 5c 22 
> charToRaw('\"') 
[1] 22 

Daher müssen Sie zwei umgekehrte Schrägstriche in der Zeichenfolge in Anführungszeichen verwenden, um intern einen umgekehrten Schrägstrich zu erstellen. Wenn Sie diese Zeichenfolge gedruckt wird der Backslash wieder was verwirrend aussieht:

> print('\\"') 
[1] "\\\"" 

Wenn Sie die unescaped Inhalt der Zeichenkette verwenden cat statt print drucken möchten:

> cat('\\"') 
\" 

Weitere siehe Hilfe in R: ?"'":

Zeichenkonstanten

Einfache und doppelte Anführungszeichen begrenzen Zeichenkonstanten. Sie können synonym verwendet werden, aber doppelte Anführungszeichen sind bevorzugt (und Zeichen Konstanten werden mit doppelten Anführungszeichen gedruckt), so dass einfache Anführungszeichen normalerweise nur zum Abgrenzen von Zeichen Konstanten mit doppelten Anführungszeichen verwendet werden.

Mit Backslash wird eine Escape-Sequenz innerhalb des Zeichens Konstanten gestartet. Das Auslassen eines Zeichens, das nicht in der folgenden Tabelle enthalten ist, ist ein Fehler.

Einfache Anführungszeichen müssen durch Backslash in einfach zitierten Strings und doppelten Anführungszeichen in Strings mit doppelten Anführungszeichen umgangen werden.

\ n \ r Wagenrücklauf \ t tab \ b Backspace newline \ a alert (Glocke) \ vertikale Lasche Vorschub \ v f Form \ Backslash \ \ 'ASCII Apostroph' \ "ASCII Anführungszeichen" `ASCII Grab Akzent (Backtick) `
Zeichen mit vorgegebenen oktalen Code (1, 2 oder 3 Ziffern) \ xnn Zeichen mit gegebenem Hex - Code (1 oder 2 Hexadezimalziffern) \ unnnn Unicode - Zeichen mit angegebenen Code (1--4 hex-Ziffern) \ Unnnnnnnn Unicode-Zeichen mit bestimmten Code (1--8 Hexziffern)