Heim  >  Artikel  >  Backend-Entwicklung  >  Bytes, die Sie beim Python-Lernen lernen müssen

Bytes, die Sie beim Python-Lernen lernen müssen

高洛峰
高洛峰Original
2017-03-13 18:04:361771Durchsuche

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用十六进制表示就是\x64
Wenn 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(&#39;utf-8&#39;)
UnicodeDecodeError: &#39;utf-8&#39; codec can&#39;t decode byte 0xc8 in position 0: invalid continuation byte
In[58]: b.decode(&#39;gb18030&#39;)
Out[58]: &#39;浜虹敓鑻︾煭锛屾垜鐢≒ython&#39;
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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn