我在嘗試將正則表達式應用於以拉丁-1(ISO-8859-1)編碼的某些字符串時遇到問題。嘗試讀取latin-1編碼字符串時,'python'中的'ASCII'轉換爲Unicode錯誤
我想要做的是通過HTTP POST從ISO-8859-1編碼的頁面發送一些數據到我的python應用程序,並在我的python腳本中使用正則表達式對數據進行一些解析。
網頁使用jQuery將數據發送到服務器,我使用.text()
方法從頁面抓取文本。一旦數據發送回服務器看起來像這樣:re.compile(r"^[\s,]*(\d*\s*\d*\/*\d)[\s,]*")
- 不幸的是我的正則表達式中的\s
與我的數據不匹配,並且我將問題追溯到html頁面使用
這一事實,該頁面被編碼爲0xA0
(非 - 破壞空間)併發送到服務器。出於某種原因,看起來,我的腳本沒有將該字符解釋爲空白,並且不匹配。根據python [文檔] [1]看起來這應該起作用,所以我必須在這裏有一個編碼問題。
然後我想嘗試將字符串轉換爲unicode並將其傳遞給正則表達式,所以我試圖查看當我轉換字符串時會發生什麼:print(unicode(data, 'iso-8859-1'))
。
不幸的是,我得到這個錯誤: UnicodeEncodeError at /script/ 'ascii' codec can't encode character u'\xa0' in position 122: ordinal not in range(128)
我很困惑,但 - 我顯然不嘗試使用ASCII解碼 - 被蟒蛇嘗試使用即使我明明路過另一ASCII編碼解碼器解碼?
你應該紀念的一個這些解決方案被接受,如果他們已經回答了您的問題 – 2010-02-19 07:25:44
謝謝,作爲n00b我昨晚一直在尋找'接受'或'回答'按鈕,但沒有發現。多一點刺激導致我發現了複選標記。 – Simon 2010-02-19 17:46:39