2013-03-25 146 views
0

我試圖抓住一個網站,其中存在unicode字符。我在很begining -*- coding: utf-8 -*-說加上我用re.UNICODE標誌尋找正則表達式,unicode模式

pattern = re.compile('(?:{}|{})'.format(regex, regex1), re.UNICODE) 

然而,當我打印輸出我還是讓這些怪異字符像

我該如何解決呢?謝謝!

+1

僅僅因爲你的字體不支持各自的Unicode字符,你可能會得到 字形。 – nwellnhof 2013-03-25 23:16:18

+0

它做百分之百。 – nutship 2013-03-26 07:44:26

+1

您必須首先解碼來自網站的UTF-8文本。例如,請參閱[此問題](http://stackoverflow.com/questions/10293234/why-wont-python-display-this-text-correctly-utf-8-decoding-issue)。 – nwellnhof 2013-03-27 00:48:08

回答

1

這可能不是一個「答案」,但是你可以嘗試使用http://www.debuggex.com來調試你的正則表達式。

+0

好吧,我會從這裏學習http://www.regular-expressions.info/unicode.html – nutship 2013-03-25 22:50:33

+0

你應該把它當作評論而不是答案。 – beerbajay 2013-03-25 23:07:31

+0

不知道爲什麼(可能是因爲我的stackoverflow聲望不夠高?),但我似乎沒有選擇留下評論,除了我自己的答案...似乎並不正確,但... – relic 2013-03-26 02:36:23

4

僅僅因爲它具有非拉丁字符的頁面並不意味着它使用unicode編碼(還有,哪個unicode編碼?utf-8?utf-16?)。

此外,re.UNICODE可能不會做你認爲它的作用。從文檔:

根據Unicode字符屬性數據庫設置'\ w,\ W,\ b,\ B,\ d,\ D,\ s`和`\ S`。

所有這一切意味着這些特定的字符類更廣泛地定義,它對源文本沒有影響。

此外,coding definition,-*- coding: utf-8 -*-僅指定您的源文件的編碼

最後,如其中一個註釋所述, 可以是使用當前字體不支持的字符的結果。反過來,這可能是假定某種編碼,而文本以不同編碼編碼的結果。

+0

謝謝,但我還在掙扎。我確定它是'utf-8' – nutship 2013-03-26 07:56:54