Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Diskussion über Zeichenkodierung und Strings beim Python-Lernen

Eine kurze Diskussion über Zeichenkodierung und Strings beim Python-Lernen

青灯夜游
青灯夜游nach vorne
2018-10-29 17:54:151676Durchsuche

Dieser Artikel bietet Ihnen eine kurze Diskussion über Zeichenkodierung und Zeichenfolgen beim Python-Lernen. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

Was ist die Zeichenkodierung?

Zum Beispiel kann das chinesische Schriftzeichen “ durch das folgende

dezimal: 20013

Binär:

01001110 00101101 (Unicode)/11100100 10111000 10101101 (UTF-8)

Teenager :

u4e2d

ASCII-Kodierung

    ASCII
  • Kodierung ist

    1 Bytes

  • Kann nur einfaches Englisch kodieren

  • Platz sparen

Unicode-Kodierung

    Unicode
  • -Kodierung beträgt normalerweise

    2 Bytes . (Zum Beispiel ist der mit ASCII codierte Buchstabe A dezimal 65, binär 01000001; A Unicode-Kodierung ist 00000000 01000001 )

  • uicode
  • Einheitliche Kodierung, Lösung von Kodierungskonflikten und Probleme mit verstümmeltem Code verschwinden

  • Verdoppelt den Speicherplatz von

    ASCII, was für Speicherung und Übertragung nicht kosteneffektiv ist (UTF-8). löst)

UTF-8-Kodierung (Unicode-Kodierung mit variabler Länge)

UTF-8

Kodierung Ein

Unicode-Zeichen wird in 1-6 Bytes entsprechend unterschiedlicher Zahlengrößen kodiert >1 Bytes, chinesische Zeichen sind normalerweise 3 Bytes, nur sehr ungewöhnliche Zeichen werden als 4-6 Bytes.

1) Wenn der Text, den Sie übertragen möchten, eine große Anzahl englischer Zeichen enthält, kann die Kodierung mit UTF-8 Platz sparen; 2) ASCII Die -Kodierung kann tatsächlich als Teil der

UTF-8

-Kodierung angesehen werden. Daher unterstützen viele nur die ASCII-Kodierung. Ältere Software kann weiterhin unter der UTF-8-Kodierung funktionieren. Arbeitsmethode für die allgemeine Zeichenkodierung des Computersystems:

Speicher: einheitliche Unicode

Kodierung

Festplatte, Übertragung: Konvertieren in utf-8

Beim Surfen im Internet konvertiert der Server den dynamisch generierten Unicode

-Inhalt in

UTF-8 und übertragen Sie es dann an den Browser. Python-Strings

Verwandte Funktionen

ord()
    Funktion
  • Ruft die Ganzzahldarstellung eines Zeichens (einzelnes Zeichen) ab. Der Parameter ist das einzelne Zeichen, das bearbeitet werden soll, und gibt eine Ganzzahl zurück.

    chr()
  • Funktion
  • Kodierung in das entsprechende Zeichen (einzelnes Zeichen) umwandeln

    encode
  • () Funktion
  • , konvertiert den String str in die angegebene Codierung Methode (Parameter) wird zu Bytes'str'.encode

    (
ascii/utf-8

) Gibt BytesString zurück. Chinesische Kodierung mit ascii

meldet einen Fehler

decode()
    Funktion
  • konvertiert Bytes, die aus dem Netzwerk oder der Festplatte gelesen werden, in die angegebene Codierungsmethode (Parameter ) wird zu str'bytes'.decode(ascii/utf-8) gibt str string

  • Bytes können nicht dekodiert werden und es wird ein Fehler gemeldet,
Wenn es nur eine kleine Anzahl ungültiger Bytes in

Bytes

gibt, können Sie

errors='ignore'übergeben, um die falschen Bytes zu ignorieren> >> b'xe4xb8xadxff'.decode('utf-8',errors='ignore') '中'

len()
    Funktion
  • , berechnet die Anzahl der in der Zeichenfolge enthaltenen Zeichen >>> len(b'ABC') 3 > ;>> len(b'xe4xb8xadxe6x96x87') 6 >>> len('Chinese'.encode('utf-8')) 6

In der neuesten Version

Python 3

In der Version ist der String in

Unicode codiert, d. h. der String wird von Python unterstützt mehrsprachigDer String-Typ von Python ist str. Wenn

über das Netzwerk übertragen oder auf der Festplatte gespeichert werden soll, müssen Sie

str ändern zu Bytes. >> Um verstümmelte Zeichen zu vermeiden, sollten Sie für

str

und BytesKonvertieren<<Der Unterschied zwischen str und Bytes

  • 1) Ein Zeichen von str entspricht mehreren Bytes , aber jedes Zeichen von Bytes belegt nur ein Byte . (Multibyte-Zeichen in Einzelbyte-Multizeichen zerlegen)

>>> 'ABC'.encode('ascii') b'ABC ' > ;>> 'Chinese'.encode('utf-8') b'xe4xb8xadxe6x96x87'

In Bytes kann es nicht als ASCII Zeichen werden mit x## angezeigt.

  • 2) Bytes

    Zeichen werden vorangestellt und in Anführungszeichen gesetzt

.py-Datei enthält chinesische Zeichen utf-. 8-Kodierung

#!/usr/bin/env python3 # -*- Kodierung: utf-8 -*-

Die erste Kommentarzeile soll Linux mitteilen /OS > Die zweite Kommentarzeile besteht darin, den Python-Interpreter anzuweisen, den Quellcode gemäß UTF-8 Codierung, andernfalls ist die chinesische Ausgabe, die Sie in den Quellcode schreiben, möglicherweise verstümmelt.

>>

Editor-NutzungUTF-8 ohne BOM<< String-Formatierung

Probleme>>> 'Hallo, %s' % 'world' 'Hallo, Welt' >> ;> ; 'Hallo, %s, du hast $%d.' % ('Michael', 1000000) 'Hallo, Michael, du hast $1000000.'

%

Operator

wird zum Formatieren von Zeichenfolgen verwendet. Es gibt mehrere

%?

-Platzhalter innerhalb der Zeichenfolge, gefolgt von mehreren Variablen oder Werten, und die Reihenfolge muss konsistent sein. Wenn es nur ein

%? gibt, können die Klammern weggelassen werden.

  • Escape, verwenden Sie

    %%, um ein %> darzustellen; >> 'Wachstumsrate: %d %%' % 7 'Wachstumsrate: 7 %'

  • format() Ein weiterer Eine Möglichkeit, eine Zeichenfolge zu formatieren, besteht darin, die Methode

    format()
  • der Zeichenfolge zu verwenden, die die Platzhalter
{0}

innerhalb der Zeichenfolge durch die übergebenen Parameter ersetzt. ,

{1}...
占位符 替换内容
%d 整数
%f 浮点数
%s 字符串
%x 十六进制整数
, aber diese Schreibweise ist viel schwieriger als

%

:

>> ;> Hallo, {0}, die Punktzahl hat sich um {1:.1f}%'.format('Xiao Ming', 17.125) 'Hallo, Xiao Ming, die Punktzahl hat sich um 17,1% verbessert'

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über Zeichenkodierung und Strings beim Python-Lernen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen