PythonVous devez apprendre les octets chaque jour pour apprendre et comprendre les octets en Python. Les amis intéressés peuvent se référer au
Bytecode en Python exprimé sous la forme de b'xxx'. x peut être représenté par des caractères, ou il peut être représenté par la forme de codage ASCII xnn, où nn va de 00 à ff (hexadécimal), soit un total de 256 caractères.
1. Opérations de base
Les opérations de base des octets sont répertoriées ci-dessous. On peut voir que cela est très similaire à String :
In[40]: b = b"abcd\x64" In[41]: b Out[41]: b'abcdd' In[42]: type(b) Out[42]: bytes In[43]: len(b) Out[43]: 5 In[44]: b[4] Out[44]: 100 # 100用十六进制表示就是\x64
Si vous souhaitez modifier un certain octet dans une chaîne d'octets, vous ne pouvez pas le modifier directement. Vous devez le convertir en bytearray puis le modifier : <. 🎜 >
In[46]: barr = bytearray(b) In[47]: type(barr) Out[47]: bytearray In[48]: barr[0] = 110 In[49]: barr Out[49]: bytearray(b'nbcdd')
2. La relation entre les octets et les caractères
Il est également mentionné ci-dessus que les octets et les caractères sont très similaires. En fait, ils peuvent être convertis les uns dans les autres. Les octets peuvent être convertis en caractères correspondants via une certaine forme de codage. Les octets peuvent être convertis en caractères en passant la méthode d'encodage via la méthode encode(), et les caractères peuvent être convertis en octets via la méthode decode() :In[50]: s = "人生苦短,我用Python" In[51]: b = s.encode('utf-8') In[52]: b Out[52]: b'\xe4\xba\xba\xe7\x94\x9f\xe8\x8b\xa6\xe7\x9f\xad\xef\xbc\x8c\xe6\x88\x91\xe7\x94\xa8Python' In[53]: c = s.encode('gb18030') In[54]: c Out[54]: b'\xc8\xcb\xc9\xfa\xbf\xe0\xb6\xcc\xa3\xac\xce\xd2\xd3\xc3Python' In[55]: b.decode('utf-8') Out[55]: '人生苦短,我用Python' In[56]: c.decode('gb18030') Out[56]: '人生苦短,我用Python' In[57]: c.decode('utf-8') Traceback (most recent call last): exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-57-8b50aa70bce9>", line 1, in <module> c.decode('utf-8') UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 0: invalid continuation byte In[58]: b.decode('gb18030') Out[58]: '浜虹敓鑻︾煭锛屾垜鐢≒ython'
3. Application
Pour l'exemple le plus simple, je souhaite explorer le contenu d'une page Web. Explorons maintenant la page renvoyée lors de la recherche de Python sur Baidu. Baidu utilise le format de codage UTF-8. Si le résultat renvoyé n'est pas décodé, il s'agira d'une chaîne d'octets très longue. Après un décodage correct, une page HTML normale peut être affichée.import urllib.request url = "http://www.baidu.com/s?ie=utf-8&wd=python" page = urllib.request.urlopen(url) mybytes = page.read() encoding = "utf-8" print(mybytes.decode(encoding)) page.close()
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!