So lesen Sie zitierten Text mit enthalteten Anführungszeichen

9

Betrachten Sie die folgende kommagetrennte Datei. Der Einfachheit halber soll es eine Zeile enthalten:

%Vor%

Wenn Sie versuchen, es mit dem Befehl

zu lesen %Vor%

Die Zeile wird in 4 Teile getrennt, da die Zeile 3 Kommas enthält. Eigentlich möchte ich nur 3 Teile lesen, von denen eines Komma enthält. Dort kommt Zitat Flagge um Hilfe. Ich habe es versucht:

%Vor%

aber das fällt mit Fehler "incomplete final line found by readTableHeader on table" . Das passiert wegen der ungeraden (sieben) Anzahl von Anführungszeichen.

read.table() sowie scan() haben den Parameter allowEscapes , aber die Einstellung auf TRUE hilft nicht. Es ist in Ordnung, denn von help(scan) kannst du lesen:

  

Die Fluchten, die interpretiert werden, sind die Steuerzeichen             '\ A, \ b, \ f, \ n, \ r, \ t, \ v', ...     ... Jeder andere ist entkommen             Das Zeichen wird wie es selbst behandelt, einschließlich Backslash

Bitte schlagen Sie vor, wie Sie solche in Anführungszeichen gesetzten csv-Dateien mit entdeckten \' -Angaben lesen würden.

    
Max 17.05.2011, 14:24
quelle

1 Antwort

5

Eine Möglichkeit besteht darin, readLines() zu verwenden, um alles einzulesen, wie es ist, und dann das Zitatzeichen durch etwas anderes zu ersetzen, zB:

%Vor%

Damit können Sie den Vektor tt mit textConnection

lesen %Vor%

Nicht die schönste Lösung, aber es funktioniert (vorausgesetzt, Sie haben kein "Zeichen irgendwo in der Datei natürlich ...")

    
Joris Meys 17.05.2011, 14:57
quelle