Maison  >  Article  >  développement back-end  >  Explication des codecs du module de conversion en python (avec exemples)

Explication des codecs du module de conversion en python (avec exemples)

不言
不言avant
2018-10-29 17:13:257404parcourir

Cet article vous apporte une explication des codecs du module de conversion en python (avec des exemples). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

0. Encodage

Lors de la conversion de l'encodage, il est généralement nécessaire d'utiliser l'Unicode comme encodage intermédiaire, c'est-à-dire de décoder d'abord les autres chaînes codées en Unicode. , puis encodez d'Unicode vers un autre encodage.

str1.decode('gb2312')    #将gb2312编码的字符串转换成unicode编码
str2.encode('gb2312')    #将unicode编码的字符串转换成gb2312编码

Remarque :

s='Chinese' Si elle est dans un fichier utf8, la chaîne est codée en utf8. Si elle est dans un fichier gb2312, son encodage est gb2312. Dans ce cas, pour effectuer une conversion d'encodage, vous devez d'abord utiliser la méthode decode pour le convertir en encodage Unicode, puis utiliser la méthode encode pour le convertir en d'autres encodages.
Lorsqu'aucune méthode d'encodage spécifique n'est spécifiée, le fichier de code est créé en utilisant l'encodage par défaut du système.
Si la chaîne est définie comme ceci : s=u'Chinese', alors l'encodage de la chaîne est spécifié comme Unicode, qui est l'encodage interne de Python, quel que soit l'encodage du fichier de code lui-même. Il vous suffit d'utiliser directement la méthode encode pour la convertir au codage spécifié
Si une chaîne est déjà unicode, une erreur se produira lors du décodage, il est donc généralement nécessaire de déterminer si la méthode de codage est unicode isinstance(s , unicode ) # Utilisé pour déterminer s'il s'agit d'unicode

1. Afficher la méthode d'encodage

(1) Pour le bloc-notes que nous utilisons souvent, "Fichier" -> vous pouvez voir la méthode d'encodage actuelle.
(2) Ouvrez-le avec notepad++, cliquez sur "Barre de menu" -> "Format" pour l'afficher.
(3) UltraEdit :
Le format d'encodage du texte avec différents encodages est défini en fonction des deux premiers octets du texte. La définition est la suivante :

ANSI : Aucune définition de format ; 🎜> Unicode : les deux premiers octets sont FFFE ;
Unicode big endian : les deux premiers octets sont FEFF ;
UTF-8 : les deux premiers octets sont EFBB
De cette façon, vous pouvez transmettre les deux premiers ; octets Le format spécifique du fichier est déterminé.

2. Encodage python

Lorsque python doit convertir l'encodage, il utilisera l'encodage interne :

Encodage original-> L'encodage de destination

Python est traité en interne à l'aide d'Unicode, mais ce qu'il faut considérer lors de l'utilisation d'Unicode, c'est qu'il existe deux formats d'encodage. L'un est UCS-2, qui a un total de 65 536 points de code. UCS-4, qui possède 2147483648g de points de code.

Déterminez quelle méthode d'encodage le python installé utilise :

import sys
print(sys.maxunicode)
Si la valeur de sortie est 65535, alors c'est UCS-2, si la sortie est 1114111, c'est l'encodage UCS-4 .

Convertir en code interne :

c = "风卷残云"
print(type(c))
c = bytes(c,encoding='utf-8')
print(type(c))
print(c)
b = codecs.decode(c, "utf-8") #与c.decode()等效
print(type(b))
print(b)
print(c.decode())
Sortie :

<class &#39;str&#39;>
<class &#39;bytes&#39;>
b&#39;\xe9\xa3\x8e\xe5\x8d\xb7\xe6\xae\x8b\xe4\xba\x91&#39;
<class &#39;str&#39;>
风卷残云
风卷残云
3. Le module de codecs

les codecs sont spécialement utilisés pour la conversion d'encodage. Grâce à son interface, il peut être étendu à d’autres transformations de code.

Dans python3.x, les données de type octets peuvent être directement converties dans d'autres formats d'encodage sans les convertir manuellement en Unicode au préalable.

import codecs
a = "我爱你"
 # 创建utf-8编码器
look = codecs.lookup(&#39;utf-8&#39;)
type(a)
a = bytes(a,encoding=&#39;utf-8&#39;)
b = look.decode(a) 
print(b)
Sortie :

('我爱你', 9)
Dans le tuple renvoyé, b[0] est les données et b[1] est la longueur.

** Utilisez la méthode d'ouverture fournie par les codecs pour spécifier l'encodage de langue du fichier ouvert. Il sera automatiquement converti en Unicode interne lors de la lecture**

f = codecs.open(filepath, 'r', 'utf8')
La méthode de lecture est : Il existe de nombreuses façons de parcourir le f ici à l'aide d'une boucle for. Bien sûr, il peut également être lu directement à l'aide de la méthode de fonction readline ou readlines.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer