Maison > développement back-end > Tutoriel Python > Choses à faire avec les chaînes Python

Choses à faire avec les chaînes Python

Tomorin
Libérer: 2018-08-23 17:47:29
original
1405 Les gens l'ont consulté

Ce chapitre présente l'écriture et le traitement des chaînes Python Avant, nous avons résolu le problème gênant du encodage des caractères, puis nous étudierons la chaîne Python.

Dans la dernière version de Python 3, les chaînes sont codées en Unicode, ce qui signifie que les chaînes Python prennent en charge plusieurs langues, par exemple :

>>> print('包含中文的str')
包含中文的str
Copier après la connexion

Pour le encodage d'un seul caractère, Python fournit la fonction ord() pour obtenir la représentation entière du caractère, chr() La fonction convertit l'encodage en caractère correspondant :

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'
Copier après la connexion

Si vous connaissez l'encodage entier du caractère, vous pouvez également écrire str en hexadécimal :

>>> '\u4e2d\u6587'
'中文'
Copier après la connexion

Deux types Les méthodes d'écriture sont tout à fait équivalentes.

Puisque le type de chaîne de Python est str, qui est représenté par Unicode en mémoire, et un caractère correspond à plusieurs octets. Si vous souhaitez le transmettre sur le réseau ou l'enregistrer sur le disque, vous devez changer str en octets en octets.

Python utilise des guillemets simples ou doubles avec le préfixe b pour représenter les données de type octets :

x = b'ABC'
Copier après la connexion

Veillez à faire la distinction entre 'ABC' et b'ABC', le premier est str, et ce dernier est Bien que le contenu de ce dernier soit affiché de la même manière que le premier, chaque caractère d'octets n'occupe qu'un octet.

Str exprimé en Unicode peut être codé en octets spécifiés via la méthode encode(), par exemple :

>>> 'ABC'.encode('ascii')
b'ABC'
>>> '中文'.encode('utf-8')
b'\xe4\xb8\xad\xe6\x96\x87'
>>> '中文'.encode('ascii')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>UnicodeEncodeError:
   &#39;ascii&#39; codec can&#39;t encode characters in position 0-1: ordinal not in range(128)
Copier après la connexion

Str en anglais pur peut être codé en octets en utilisant ASCII, et le contenu est le même, Str contenant des caractères chinois peut être codé en octets en utilisant UTF-8. Str contenant du chinois ne peut pas être codé en ASCII, car la plage de codage chinois dépasse la plage de codage ASCII et Python signalera une erreur.

En octets, les octets qui ne peuvent pas être affichés sous forme de caractères ASCII sont affichés avec x##.

À l'inverse, si nous lisons un flux d'octets depuis le réseau ou le disque, les données lues sont en octets. Pour convertir des octets en str, vous devez utiliser la méthode decode() :

>>> b&#39;ABC&#39;.decode(&#39;ascii&#39;)
&#39;ABC&#39;
>>> b&#39;\xe4\xb8\xad\xe6\x96\x87&#39;.decode(&#39;utf-8&#39;)
&#39;中文&#39;
Copier après la connexion

Si bytes contient des octets qui ne peuvent pas être décodés, la méthode decode() signalera une erreur :

>>> b&#39;\xe4\xb8\xad\xff&#39;.decode(&#39;utf-8&#39;)
Traceback (most recent call last):
  ...
UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xff in position 3: invalid start byte
Copier après la connexion

Ce qui précède est le problème de la programmation de chaînes Python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal