>백엔드 개발 >파이썬 튜토리얼 >파이썬 학습에서 꼭 배워야 할 바이트

파이썬 학습에서 꼭 배워야 할 바이트

高洛峰
高洛峰원래의
2017-03-13 18:04:361804검색

PythonPython에서 바이트를 배우고 이해하려면 매일 바이트를 배워야 합니다. 관심 있는 친구는

B'xxx' 형식으로 표현되는 Python의 바이트코드를 참고하세요. x는 문자로 표시될 수도 있고 xnn 형식의 ASCII 인코딩으로 표시될 수도 있습니다. nn 범위는 00-ff(16진수)이며 총 256자입니다.

1. 기본 동작

바이트의 기본 동작은 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

바이트 문자열의 바이트를 수정하려면 직접 수정할 수 없습니다. 바이트 배열로 변환한 후 수정해야 합니다.


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. 바이트와 문자의 관계

바이트와 문자는 실제로 매우 유사하다고도 언급했습니다. 서로 변환됩니다. 바이트는 일부 인코딩 형식을 통해 해당 문자로 변환될 수 있습니다. encode() 메서드를 통해 인코딩 메서드를 전달하면 바이트를 문자로 변환할 수 있고, 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(&#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;

우리는 다음과 같이 할 수 있습니다. 서로 다른 인코딩 방법을 사용하여 구문 분석된 문자와 바이트는 완전히 다릅니다. 인코딩과 디코딩에 서로 다른 인코딩 방법을 사용하면 잘못된 문자가 생성되거나 변환도 실패합니다. 각 인코딩 방법에는 서로 다른 바이트 유형 수가 포함되어 있으므로 위 예의 xc8은 최대 문자인 utf-8을 초과합니다.

3. 애플리케이션

가장 간단한 예로, Baidu에서 Python을 검색할 때 반환되는 페이지를 크롤링해 보겠습니다. Baidu는 UTF-8 인코딩 형식을 사용합니다. 반환 결과가 디코딩되지 않으면 매우 긴 바이트 문자열이 됩니다. 올바르게 디코딩되면 일반 HTML 페이지가 표시될 수 있습니다.


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()

위 내용은 Python 프로그래밍을 배우는 모든 분들에게 도움이 되는 내용이길 바랍니다.

위 내용은 파이썬 학습에서 꼭 배워야 할 바이트의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.