Python-Unicode-Normalisierung: Ist es richtig, u '\ xb4' in u '\ u0301 zu übersetzen?

8

Sehen Sie sich das folgende Snippet an:

%Vor%

Ich versuche zu verstehen, ob das zu übersetzende Verhalten u'\xb4' in u' \u0301' korrekt ist. Warum packt er den akuten Akzent mit einem Leerzeichen? Warum übersetzt es überhaupt die u \xb4 ?

Im Dateiformat sehen wir, dass ACUTE ACCENT früher als% co_de bezeichnet wurde %. Ich dachte, es bedeutete nur, dass der Cursor sich bewegen sollte, anstatt darauf zu warten, dass das folgende Zeichen eingegeben wird.

UPD: Falls jemand interessiert ist, hier ist eine Liste, wenn Unicode-Zeichen, die nach NFKC-Normalisierung ein Leerzeichen am Anfang haben: Ссылка

    
newtover 19.12.2012, 14:48
quelle

3 Antworten

11

Ein Akzentzeichen ist die Kombination aus einem Leerzeichen und einem kombinierten Akzentzeichen, wie im Unicode-Standard angegeben:

%Vor%

Das \u00B4 -Zeichen hat eine mehrdeutige Geschichte, aber der Unicode-Standard hat entschieden, es als Leerzeichen + Akzent zu behandeln, obwohl oft nur als diakritisches Zeichen verwendet wurde, siehe < a href="http://www.unicode.org/mail-arch/unicode-ml/y2010-m09/0067.html"> diese Diskussion .

Sie könnten vielleicht \u02CA als Alternative verwenden; Es wird nicht als Leerzeichen behandelt, und es ist keine Zerlegung angegeben. Es ist stattdessen als Brief qualifiziert, so dass Ihre Meilenzahl variieren kann.

    
Martijn Pieters 19.12.2012, 14:51
quelle
4

Sehen Sie sich das Dokument Unicode Collation Algorithm an. Beachten Sie insbesondere

  

Kompatibilität Normalisierung (NFKC) faltet Stand-alone-Akzente zu a   Kombination von Leerzeichen + Akzent kombinieren.

    
borrible 19.12.2012 14:56
quelle
3

In NFKD werden Zeichen mit Akzent auf "geteilte" Weise gespeichert: zuerst das zu akzentuierende Zeichen und dann der Kombinationsakzent: u' \u0301'

Akzentuierte Zeichen werden in NFKC "kombiniert" gespeichert: Es gibt einen dedizierten Unicode-Codepunkt: u'\xb4' , was eine Abkürzung für u'\u00b4' ist.

Beide repräsentieren nur den Akzent, der als Akzent für ein Leerzeichen gesehen werden kann.

    
glglgl 19.12.2012 14:58
quelle

Tags und Links