Python3之亂碼\xe6\x97\xa0\xe6\xb3\x95處理方式
查看字符編碼:
import chardet
response = chardet.detect(b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8')
print(response)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
亂碼字符轉(zhuǎn)換:
response = b'\xe5\xbd\x93\xe5\x89\x8d\xe7\x9b\xae\xe5\xbd\x95\xe4\xb8\x8b\xe6\x89\x80\xe6\x9c\x89\xe6\x96\x87\xe4\xbb\xb6\xe5\x90\x8d\xe6\xb1\x87\xe6\x80\xbb\xe5\x88\x97\xe8\xa1\xa8'
print(response.decode('utf8'))
# def decode_char(*args):
# response = args[0]
# print(response.decode('utf8'))
#
# c = b'\a8\xe5\x90\xa7\xef\xbc\x81'
#
# decode_char(c)
補(bǔ)充知識(shí):python3 中怎么把類似這樣的'\xe5\xae\x9d\xe9\xb8\xa1\xe5\xb8\x82'轉(zhuǎn)換成漢字輸出
在編程的過程中遇到了類似的困擾,網(wǎng)上查了很多解決思路,終于算是明白了一些,這里和大家分享 一下。
python3相對(duì)于python2最重要的新特性之一就是對(duì)字符串(文本)和二進(jìn)制數(shù)據(jù)流做了明確的區(qū)分,文本總是Unicode,由字符類型表示,而二進(jìn)制數(shù)據(jù)則由bytes類型表示,python3不會(huì)以任意隱式方式混用字節(jié)型和字符型,也不能拼接字符串和字節(jié)流(python2中可以,會(huì)自動(dòng)進(jìn)行轉(zhuǎn)換),也不能在字節(jié)流中搜索字符串,也不能將字符串傳入?yún)?shù)為字節(jié)流的函數(shù)。
str和bytes類型之間的相互轉(zhuǎn)換
字符串類str有一個(gè)encode()方法,它是字符串向比特流的編碼過程。
bytes類則有一個(gè)decode()方法,它是比特流向字符串的解碼過程

encode過程
s = '絕地求生' ss = s.encode() print(type(ss)) print(ss)
運(yùn)行結(jié)果:

decode過程
s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f' ss = s.decode() print(type(ss)) print(ss)
運(yùn)行結(jié)果:

了解過基本的轉(zhuǎn)化過程,下面回到主題,如何將'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'轉(zhuǎn)換成漢字輸出呢?
要解決的問題是將bytes類型的內(nèi)容以漢字的形式輸出,但是該部分內(nèi)容是字符串類型。因此首先需要將該str轉(zhuǎn)換成bytes類型,再decode解碼為str輸出。這里需要用到的方法是encode(‘raw_unicode_escape')。當(dāng)然,也可以使用decode(‘raw_unicode_escape')方法輸出內(nèi)容為bytes形式的字符串
s = '\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f'
ss = s.encode('raw_unicode_escape')
print(type(ss))
print(ss)
sss = ss.decode()
print(sss)
結(jié)果:

方法補(bǔ)充:如果我們直接定義bytes類型的變量,也可以直接使用str(s, ‘utf8')的方式輸出漢字
s = b'\xe7\xbb\x9d\xe5\x9c\xb0\xe6\xb1\x82\xe7\x94\x9f' print(type(s)) print(s) ss = str(s, 'utf8') print(ss)
結(jié)果:

第二種方法可以輸出從網(wǎng)絡(luò)上直接抓取的網(wǎng)頁中包含的中文字符。
我們使用如下代碼,抓取網(wǎng)頁www.baidu.com。
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html = response.read()
print(html)
顯示的結(jié)果中,中文部分會(huì)以\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80代替,這里可以使用方法二進(jìn)行轉(zhuǎn)換。
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com')
html =str(response.read(),'utf-8')
print(html)
結(jié)果如下:

以上這篇Python3之亂碼\xe6\x97\xa0\xe6\xb3\x95處理方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python利用xlrd?與?xlwt?模塊操作?Excel
這篇文章主要介紹了Python利用xlrd?與?xlwt?模塊操作?Excel,文章圍繞主題展開詳細(xì)的內(nèi)容,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Python利用lxml庫實(shí)現(xiàn)XML處理
lxml庫是Python中處理XML和HTML文檔的強(qiáng)大庫,提供了豐富的API以進(jìn)行各種操作,本文將討論如何使用lxml庫,包括如何創(chuàng)建XML文檔,如何使用XPath查詢,以及如何解析大型XML文檔,需要的可以參考下2023-08-08
Python Tornado之跨域請(qǐng)求與Options請(qǐng)求方式
這篇文章主要介紹了Python Tornado之跨域請(qǐng)求與Options請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python利用omegaconf庫輕松實(shí)現(xiàn)配置文件管理
omegaconf是一個(gè)靈活且強(qiáng)大的Python配置管理庫,支持YAML,dict,列表等多種數(shù)據(jù)格式,下面我們就來看看如何使用omegaconf實(shí)現(xiàn)配置文件管理吧2025-02-02
使用Python & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例
下面小編就為大家?guī)硪黄褂肞ython & Flask 實(shí)現(xiàn)RESTful Web API的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09
python在ubuntu中的幾種安裝方法(小結(jié))
本篇文章主要介紹了python在ubuntu中的幾種安裝方法(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12
用PyInstaller把Python代碼打包成單個(gè)獨(dú)立的exe可執(zhí)行文件
這篇文章主要介紹了用PyInstaller把Python代碼打包成單個(gè)獨(dú)立的exe可執(zhí)行文件,需要的朋友可以參考下2018-05-05
WIn10+Anaconda環(huán)境下安裝PyTorch(避坑指南)
這篇文章主要介紹了WIn10+Anaconda環(huán)境下安裝PyTorch(避坑指南),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-01-01

