Heim > Artikel > Backend-Entwicklung > Bytes, die Sie beim Python-Lernen lernen müssen
PythonSie müssen jeden Tag Bytes lernen, um Bytes in Python zu lernen und zu verstehen. Interessierte Freunde können sich auf
Bytecode in Python beziehen, der in der Form b'xxx' ausgedrückt wird. x kann durch Zeichen oder durch die ASCII-Codierung xnn dargestellt werden, wobei nn im Bereich von 00-ff (hexadezimal) liegt und insgesamt 256 Zeichen umfasst.
1. Grundoperationen
Die Grundoperationen von Bytes sind unten aufgeführt. Es ist ersichtlich, dass sie String sehr ähnlich sind 🎜>
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用十六进制表示就是\x64Wenn Sie ein bestimmtes Byte in einer Bytefolge ändern möchten, können Sie es nicht direkt ändern. Sie müssen es in ein Bytearray konvertieren und es dann ändern:
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. Die Beziehung zwischen Bytes und Zeichen
Oben wurde auch erwähnt, dass Bytes und Zeichen sehr ähnlich sind. Tatsächlich sind sie ineinander umwandelbar. Bytes können durch eine Codierungsform in entsprechende Zeichen umgewandelt werden. Bytes können in Zeichen umgewandelt werden, indem die Kodierungsmethode über die Methode encode() übergeben wird, und Zeichen können über die Methode decode() in Bytes umgewandelt werden: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'Es ist ersichtlich, dass die mit unterschiedlichen Kodierungsmethoden analysierten Zeichen und Bytes völlig unterschiedlich sind. Wenn zum Kodieren und Dekodieren unterschiedliche Kodierungsmethoden verwendet werden, werden verstümmelte Zeichen generiert oder sogar die Konvertierung schlägt fehl. Da jede Codierungsmethode eine andere Anzahl von Bytetypen enthält, überschreitet xc8 im obigen Beispiel das maximale Zeichen von utf-8.
3. Anwendung
Für das einfachste Beispiel möchte ich den Inhalt einer Webseite crawlen, die bei der Suche nach Python auf Baidu zurückgegeben wird. Baidu verwendet das UTF-8-Kodierungsformat. Wenn das Rückgabeergebnis nicht dekodiert wird, handelt es sich um eine superlange Bytezeichenfolge. Nach korrekter Dekodierung kann eine normale HTML-Seite angezeigt werden.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()Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für alle beim Erlernen der Python-Programmierung hilfreich sein wird.
Das obige ist der detaillierte Inhalt vonBytes, die Sie beim Python-Lernen lernen müssen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!