Was ist der unterschied zwischen enkodieren und dekodieren lexikon

Es gibt Einträge ähnlich wie in einem Wörterbuch. Sie enthalten für jedes Wort Informationen zur Bedeutung, lautlichen Zusammenstellung durch Phoneme (Wortform), wie es geschrieben wird, aus welchen Teilen es sich zusammensetzt und zu welcher Wortklasse es gehört. Das Lexikon kann unterteilt werden in aktives Wissen (ca. 30.000 bis 50.000 Wörter) und passives Wissen (ca. 100.000 bis 200.000 Wörter).

Eine intensiv beforschte Frage ist, wie komplexe Wörter kodiert sind. Komplexe Wörter können entstehen durch:

Flexion: z.B. klein-er --> klein-e, Wortklasse bleibt bestehen Derivation: z.B. Luft --> luftig, Wortklasse wird verändert Komposition: z.B. Fußball, Fan --> Fußballfan(ähnlich wie Derivation ein kreativer, endlos fortführbarer Prozess).

Einige Modelle gehen davon aus, dass alle einfachen und komplexen Wörter als Ganzes im mentalen Lexikon vorliegen (Butterworth, 1983). Andere Modelle gehen davon aus, dass nur Morpheme im Lexikon abgelegt sind und beim Sprechen zusammengesetzt oder beim Verstehen in Teile zerlegt werden (Levelt et al., 1999)

  • Programmierung
  • Stichworte
  • Kontakte
  • Cookie-Richtlinie

180

Ich war mir nie sicher, ob ich den Unterschied zwischen str / unicode decode und encode verstehe.

Ich weiß, dass dies str().decode()der Fall ist, wenn Sie eine Byte-Zeichenfolge haben, von der Sie wissen, dass sie eine bestimmte Zeichencodierung hat. Wenn dieser Codierungsname gegeben ist, wird eine Unicode-Zeichenfolge zurückgegeben.

Ich weiß, dass unicode().encode()Unicode-Zeichen gemäß einem bestimmten Codierungsnamen in eine Zeichenfolge von Bytes konvertiert werden.

Aber ich verstehe nicht wofür str().encode()und bin unicode().decode()dafür. Kann jemand etwas anderes erklären und möglicherweise auch korrigieren, was ich oben falsch verstanden habe?

BEARBEITEN:

Mehrere Antworten geben Auskunft darüber, was .encodeeine Zeichenfolge bewirkt, aber niemand scheint zu wissen, was .decodefür Unicode gilt.

Antworten:

106

Die decodeMethode der Unicode-Zeichenfolgen hat überhaupt keine Anwendungen (es sei denn, Sie haben aus irgendeinem Grund Nicht-Textdaten in einer Unicode-Zeichenfolge - siehe unten). Es ist hauptsächlich aus historischen Gründen da, denke ich. In Python 3 ist es komplett weg.

unicode().decode()führt eine implizite Codierung der sVerwendung des Standardcodecs (ASCII) durch. Überprüfen Sie dies wie folgt:

>>> s = u'ö' >>> s.decode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0: ordinal not in range(128) >>> s.encode('ascii') Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 0: ordinal not in range(128)

Die Fehlermeldungen sind genau gleich.

Denn str().encode()es umgekehrt ist - es versucht , eine implizite Decodierung des smit der Standard - Codierung:

>>> s = 'ö' >>> s.decode('utf-8') u'\xf6' >>> s.encode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal not in range(128)

So verwendet, str().encode()ist auch überflüssig.

Es gibt jedoch eine andere Anwendung der letzteren Methode, die nützlich ist: Es gibt Codierungen , die nichts mit Zeichensätzen zu tun haben und daher auf sinnvolle Weise auf 8-Bit-Zeichenfolgen angewendet werden können:

>>> s.encode('zip') 'x\x9c;\xbc\r\x00\x02>\x01z'

Sie haben jedoch Recht: Die mehrdeutige Verwendung von "Codierung" für diese beiden Anwendungen ist ... unangenehm. Auch hier ist dies mit separaten byteund stringTypen in Python 3 kein Problem mehr.

71

Die Darstellung einer Unicode-Zeichenfolge als Byte-Zeichenfolge wird als Codierung bezeichnet . Verwenden Sie u'...'.encode(encoding).

Beispiel:

>>> u'æøå'.encode ('utf8') '\ xc3 \ x83 \ xc2 \ xa6 \ xc3 \ x83 \ xc2 \ xb8 \ xc3 \ x83 \ xc2 \ xa5' >>> u'æøå'.encode ('latin1') '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5' >>> u'æøå'.encode ('ascii') UnicodeEncodeError: Der Codec 'ascii' kann keine Zeichen an Position 0-5 codieren: Ordnungszahl nicht im Bereich (128)

Normalerweise codieren Sie eine Unicode-Zeichenfolge, wenn Sie sie für E / A verwenden müssen, z. B. über das Netzwerk übertragen oder in einer Festplattendatei speichern müssen.

Das Konvertieren einer Byte-Zeichenfolge in eine Unicode-Zeichenfolge wird als Decodierung bezeichnet . Verwenden Sie unicode('...', encoding)oder '...'. Decodieren (Codieren).

Beispiel:

>>> u'æøå ' u '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5' # Der Interpreter druckt das Unicode-Objekt wie folgt >>> Unicode ('\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5', 'latin1') u '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5' >>> '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'.decode (' latin1 ') u '\ xc3 \ xa6 \ xc3 \ xb8 \ xc3 \ xa5'

Normalerweise dekodieren Sie eine Zeichenfolge von Bytes, wenn Sie Zeichenfolgendaten vom Netzwerk oder von einer Festplattendatei empfangen.

Ich glaube, es gibt einige Änderungen in der Unicode-Behandlung in Python 3, daher ist das oben Gesagte wahrscheinlich nicht korrekt für Python 3.

Einige gute Links:

  • Das absolute Minimum Jeder Softwareentwickler muss unbedingt über Unicode und Zeichensätze Bescheid wissen (keine Ausreden!)
  • Unicode-HOWTO

16

anUnicode. encode ('encoding') führt zu einem String- Objekt und kann für ein Unicode-Objekt aufgerufen werden

ein Faden.decode ('encoding') führt zu einem Unicode- Objekt und kann für eine Zeichenfolge aufgerufen werden, die in einer bestimmten Codierung codiert ist.

Noch ein paar Erklärungen:

Sie können ein Unicode-Objekt erstellen, für das keine Codierung festgelegt ist. Die Art und Weise, wie Python es im Speicher speichert, geht Sie nichts an. Sie können es suchen, teilen und jede beliebige Funktion zur Manipulation von Zeichenfolgen aufrufen.

Es kommt jedoch vor, dass Sie Ihr Unicode-Objekt auf der Konsole oder in einer Textdatei drucken möchten. Also musst du codieren (zum Beispiel in UTF-8), Sie rufen encode ('utf-8') auf und Sie erhalten eine Zeichenfolge mit '\ u <someNumber>', die perfekt druckbar ist.

Dann wieder - Sie möchten das Gegenteil tun - lesen Sie die in UTF-8 codierte Zeichenfolge und behandeln Sie sie als Unicode, sodass \ u360 ein Zeichen und nicht 5 ist. Dann Sie dekodieren eine Zeichenfolge (mit ausgewählter Codierung) und Holen Sie sich ein brandneues Objekt vom Typ Unicode.

Nur als Randnotiz: Sie können eine perverse Codierung wie 'zip', 'base64', 'rot' auswählen und einige von ihnen werden von String zu String konvertiert, aber ich glaube, der häufigste Fall ist UTF-8 / UTF-16 und String.

12

mybytestring.encode (somecodec) ist für folgende Werte von Bedeutung somecodec:

  • base64
  • bz2
  • zlib
  • verhexen
  • quopri
  • rot13
  • string_escape
  • uu

Ich bin mir nicht sicher, wozu das Decodieren eines bereits decodierten Unicode-Textes gut ist. Der Versuch, dies mit einer Codierung zu versuchen, scheint immer zuerst zu versuchen, mit der Standardcodierung des Systems zu codieren.

5

Es gibt einige Codierungen, die zum Ent- / Codieren von str zu str oder von Unicode zu Unicode verwendet werden können. Zum Beispiel base64, hex oder sogar rot13. Sie sind im Codecs-Modul aufgeführt .

Bearbeiten:

Die Decodierungsnachricht in einer Unicode-Zeichenfolge kann die entsprechende Codierungsoperation rückgängig machen:

In [1]: u'0a'.decode('hex') Out[1]: '\n'

Der zurückgegebene Typ ist str anstelle von Unicode, was meiner Meinung nach unglücklich ist. Aber wenn Sie nicht richtig zwischen str und unicode ein- / dekodieren, sieht das sowieso wie ein Durcheinander aus.

1

Die einfache Antwort ist, dass sie genau das Gegenteil voneinander sind.

Der Computer verwendet die grundlegende Byteeinheit zum Speichern und Verarbeiten von Informationen. es ist für menschliche Augen bedeutungslos.

Zum Beispiel ist '\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87' die Darstellung von zwei chinesischen Zeichen, aber der Computer weiß nur (dh Drucken oder Speichern), dass es sich um chinesische Zeichen handelt, wenn sie ein Wörterbuch erhalten, um danach zu suchen Chinesisches Wort, in diesem Fall ist es ein "utf-8" -Wörterbuch, und es würde das beabsichtigte chinesische Wort nicht korrekt anzeigen, wenn Sie in ein anderes oder falsches Wörterbuch schauen (unter Verwendung einer anderen Dekodierungsmethode).

In dem obigen Fall ist der Prozess für einen Computer, nach chinesischen Wörtern zu suchen decode().

Und der Prozess des Computerschreibens der Chinesen in den Computerspeicher ist encode().

Die codierten Informationen sind also die Rohbytes, und die decodierten Informationen sind die Rohbytes und der Name des zu referenzierenden Wörterbuchs (jedoch nicht das Wörterbuch selbst).

Was versteht man unter enkodierung?

ἐν (en) innen], [KOG], unter Encodierung versteht man in der Gedächtnisforschung den mentalen Prozess der (bewussten oder unbewussten) Einspeicherung von mentalen Inhalten in eine (oder mehrere) Gedächtniskomponente(n) zum Zweck der langfristigen Speicherung und des späteren Abrufs (Abruf). Sprachproduktion.

Was ist enkodierung Gedächtnis?

Unter Enkodierung wird die Aufnahme von Information verstanden, Speicherung heißt, dass die Information dauerhaft im Gedächtnis abgelegt wird und Abruf bezeichnet das erfolgreiche Wiederfinden der abgespeicherten Information.

Was ist die Enkodierspezifität?

Die Enkodierspezifität bezeichnet in der Lernpsychologie den Umstand, dass Erinnerungen aus dem episodischen Gedächtnis dann am leichtesten abgerufen werden können, wenn die Umstände des Abrufs denen des Erwerbs ähneln.

Wie verarbeitet der Mensch Informationen?

Eine Information wird im sensorischen Speicher aufgenommen und für wenige Millisekunden flüchtig gespeichert. Je nach Relevanz wird sie rausgefiltert und zerfällt oder sie wird an das Arbeitsgedächtnis weitergeleitet, wo sie erneut kurzzeitig gespeichert, jedoch auch verarbeitet wird.

Toplist

Neuester Beitrag

Stichworte