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
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) '文'
Si vous connaissez l'encodage entier du caractère, vous pouvez également écrire str en hexadécimal :
>>> '\u4e2d\u6587' '中文'
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'
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: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
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'ABC'.decode('ascii') 'ABC' >>> b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8') '中文'
Si bytes contient des octets qui ne peuvent pas être décodés, la méthode decode() signalera une erreur :
>>> b'\xe4\xb8\xad\xff'.decode('utf-8') Traceback (most recent call last): ... UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte
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!