Konvertieren einer Unicode-Zeichenkette in ASCII

9

Nachdem ich alles über iconv und Encoding gelesen habe, bin ich immer noch verwirrt.

Ich kratze die Quelle eines Webseite Ich habe eine Zeichenfolge, die folgendermaßen aussieht: 'pretty\u003D\u003Ebig' (wird in der R-Konsole als 'pretty\\u003D\\u003Ebig' angezeigt). Ich möchte dies in die ASCII-Zeichenfolge konvertieren, die 'pretty=>big' sein sollte.

Einfacher, wenn ich

einstelle %Vor%

Wie führe ich eine Konvertierung für x durch, um pretty=>big zu erhalten?

Irgendwelche Vorschläge?

    
seancarmody 20.07.2013, 11:39
quelle

7 Antworten

8

Verwenden Sie parse, aber bewerten Sie die Ergebnisse nicht:

%Vor%     
hadley 22.07.2013, 12:35
quelle
3

Obwohl ich Hong oois Antwort akzeptiert habe, kann ich nicht umhin zu denken, dass parse und eval eine schwergewichtige Lösung ist. Wie bereits erwähnt, ist es nicht sicher, obwohl ich für meine Anwendung sicher sein kann, dass ich keine gefährlichen Zitate bekomme.

Also habe ich einen alternativen, etwas brutalen Ansatz entwickelt:

%Vor%

Alle Vereinfachungen sind willkommen!

    
seancarmody 21.07.2013 11:46
quelle
3

Mit dem Paket stringi :

%Vor%     
Stéphane Laurent 29.01.2017 17:47
quelle
1

Ich sympathisiere; Ich habe in der Vergangenheit mit R- und Unicode-Text gekämpft und nicht immer erfolgreich. Wenn Ihre Daten in x sind, versuchen Sie zuerst eine globale Ersetzung, etwa so:

%Vor%

Ich benutze manchmal eine Konstruktion wie

%Vor%

um zu sehen, wo die hohen Codepunkte z.B. alles über 150. Das hilft mir, Probleme zu finden, die zum Beispiel durch nicht-brechende Räume verursacht werden, die immer wieder auftauchen.

    
SlowLearner 20.07.2013 12:14
quelle
1

Eine Verwendung für eval(parse) !

%Vor%

Dies hat natürlich seine eigenen Probleme, wie z. B. das manuelle Entkommen von Anführungszeichen in der Zeichenfolge. Aber es sollte für alle gültigen Unicode-Sequenzen funktionieren, die möglicherweise angezeigt werden.

    
Hong Ooi 20.07.2013 21:12
quelle
0
%Vor%

Sie scheinen jedoch eine zusätzliche Flucht zu haben

    
user1609452 20.07.2013 14:05
quelle
0

Der Trick dabei ist, dass '\u003D' eigentlich 6 Zeichen lang ist, während Sie '\u003D' wollen, was nur ein Zeichen ist. Der weitere Trick besteht darin, dass Sie zur Übereinstimmung mit diesen Backslashes zwei Backslashes verwenden müssen:

%Vor%

Um mehrere Zeichen durch ein Zeichen zu ersetzen, müssen Sie das gesamte Muster als Ziel auswählen. Sie können einen Backslash nicht einfach löschen. (Da Sie angegeben haben, dass dies ein allgemeineres Problem ist, könnte die Antwort vielleicht in Änderungen an Ihrer noch nicht beschriebenen Methode zum Herunterladen dieses Textes liegen.)

Wenn ich Ihre Funktionen und die Abhängigkeiten lade, funktioniert dieser Code:

%Vor%

(Ich denke, ich bin im Anwendungsfall immer noch nicht klar.)

    
42- 20.07.2013 17:44
quelle