第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python 'latin-1' 編解碼器無法編碼字符 - 如何忽略字符?

Python 'latin-1' 編解碼器無法編碼字符 - 如何忽略字符?

函數(shù)式編程 2021-11-09 20:33:22
這是我的代碼的要點。它試圖從舊網(wǎng)站獲取一些文本。這不是我的,所以我不能改變來源。from bs4 import BeautifulSoupimport requestsresponse = requests.get("https://mattgemmell.com/network-link-conditioner-in-lion/")data = response.textsoup = BeautifulSoup(data, 'lxml')article = soup.find_all('article')[0]text = article.find_all('p')[1].text print(text)給出了這個:“如果你——x80\x99 是使用網(wǎng)絡(luò)的 Mac 或 iOS 應(yīng)用程序的開發(fā)人員,那么——x80\x99s Mac OS X 10.7 的開發(fā)人員工具中的一項新功能——x80\x9cLion——x80\x9d(閱讀我對它在衛(wèi)報)這對你有用。這篇簡短的文章描述了它是如何工作的。我可以用它來轉(zhuǎn)換像 a\x80\x99 這樣的部分:converted_text = bytes(text, 'latin-1').decode('utf-8')實際上有效。但是如果你得到文本的不同部分:text = article.find_all('p')[8].text 給我:'\n← 在 Lion 上的文本中查找模式\n在 OS X Lion 上使用 Spaces →\n'使用bytes(text, 'latin-1')給了我:'latin-1' 編解碼器無法在位置 1 中對字符 '\u2190' 進(jìn)行編碼:序號不在范圍內(nèi) (256)我猜是箭頭?我怎樣才能讓它自動忽略和丟棄所有非拉丁字符。任何想法都會最有幫助!
查看完整描述

2 回答

?
慕桂英546537

TA貢獻(xiàn)1848條經(jīng)驗 獲得超10個贊

您不想忽略這些字符。它們表示您收到的數(shù)據(jù)已使用錯誤的字符編碼進(jìn)行解碼。在您的情況下requests,錯誤地猜測編碼是latin-1. 真正的編碼是在 HTML 響應(yīng)utf-8的<meta>標(biāo)簽中指定的。requests是一個用于處理 HTTP 的庫,它不了解 HTML。由于Content-Type標(biāo)頭未指定編碼,因此requests只能猜測編碼。BeautifulSoup但是,它是一個用于處理 HTML 的庫,它非常擅長檢測編碼。因此,您希望從響應(yīng)中獲取原始字節(jié)并將其傳遞給BeautifulSoup. IE。


from bs4 import BeautifulSoup

import requests


response = requests.get("https://mattgemmell.com/network-link-conditioner-in-lion/")

data = response.content # we now get `content` rather than `text`

assert type(data) is bytes

soup = BeautifulSoup(data, 'lxml')

article = soup.find_all('article')[0]

text = article.find_all('p')[1].text 

print(text)


assert type(text) is str

assert 'Mac OS X 10.7 “Lion”' in text


查看完整回答
反對 回復(fù) 2021-11-09
?
qq_笑_17

TA貢獻(xiàn)1818條經(jīng)驗 獲得超7個贊

使用第三個參數(shù)來bytes告訴它如何處理錯誤:


converted_text = bytes(text, 'latin-1', 'ignore')

                                         ^^^^^^

你會丟失箭頭,但其他一切都完好無損:


>>> text = '\n← Find Patterns in text on Lion\nUsing Spaces on OS X Lion →\n'

>>> converted_text = bytes(text, 'latin-1', 'ignore')

>>> converted_text

'\n Find Patterns in text on Lion\nUsing Spaces on OS X Lion \n'

以下是有關(guān)文檔中參數(shù)的更多信息 - https://docs.python.org/3.3/howto/unicode.html:


errors 參數(shù)指定無法根據(jù)編碼規(guī)則轉(zhuǎn)換輸入字符串時的響應(yīng)。此參數(shù)的合法值為“strict”(引發(fā) UnicodeDecodeError 異常)、“replace”(使用 U+FFFD、REPLACEMENT CHARACTER)或“ignore”(僅將字符排除在 Unicode 結(jié)果之外)。


查看完整回答
反對 回復(fù) 2021-11-09
  • 2 回答
  • 0 關(guān)注
  • 518 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號