2009-05-26 72 views
0

我使用Python殼牌這樣:如何在python中顯示非ascii字符?

>>> s = 'Ã' 
>>> s 
'\xc3' 

如何打印s變量來表現人物580這是第一個也是最簡單的問題。真的,我從網頁中獲得的內容不像前一個那樣具有ascii字符,並且像á,é,í,ñ等代字符。另外,我試圖用這些字符執行一個正則表達式針對網頁內容的模式表達。

如何解決這個問題?

這是一個正則表達式的例子:如果我使用Expresson應用程序工作正常

u'<td[^>]*>\s*Definición\s*</td><td class="value"[^>]*>\s*(?P<data>[\w ,-:\.\(\)]+)\s*</td>' 

編輯[05/26/2009 16:38]: 對不起,關於我的解釋。我會盡力解釋更好。我不得不從一個頁面獲取一些文本。我有該網頁的網址,我有正則表達式來獲取該文本。我認爲的第一件事是正則表達式是錯誤的。我用Expresso檢查過,工作正常,我收到了我想要的文本。所以,我認爲的第二件事是打印頁面的內容,那是當我看到內容不是我在網頁源代碼中看到的內容時。區別在於非ASCII字符,如á,é,í等。現在,我不知道我必須做什麼,如果問題出在頁面內容的編碼或正則表達式的模式文本中。我定義的一個正則表達式是前一個。

問題wolud是:有任何問題使用正則表達式模式文本有非ASCII字符?

+0

爲什麼你需要表現出它在殼? – SilentGhost 2009-05-26 14:08:20

+0

它只是測試 – jaloplo 2009-05-26 14:14:27

+0

對不起大家關於我在Python中的無知。我是新手,對於我寫的文本以及翻譯過程中的表現感到尷尬。另外,我使用的是正則表達式,並認爲非ascii字符不會像現有的那樣被替換,而不是像''這樣的奇怪字符(這是「字符」)。那麼,謝謝你試着理解我的問題並儘可能回答你的問題。 對不起。 – jaloplo 2009-05-27 09:55:17

回答

2

假設您想將其打印爲utf-8。蟒蛇3之前,最好是專門對其進行編碼

print u'Ã'.encode('utf-8') 

,如果你得到的文本外,那麼你必須明確解碼(「UTF-8)如

f = open(my_file) 
a = f.next().decode('utf-8') # you have a unicode line in a 
print a.encode('utf-8') 
2

如何打印s變量以顯示字符?
使用print

>>> s = 'Ã' 
>>> s 
'\xc3' 
>>> print s 
à 
1

我會用ord()來找出一個字符是ASCII /特殊:

if ord(c) > 127: 
    # special character 

這可能不會在多字節編碼,如UTF-8的工作。在這種情況下,我會在測試之前轉換爲Unicode。

如果你從網頁上得到特殊字符,你應該知道編碼。然後解碼它,請參閱Unicode HOWTO

編輯:我絕對不知道這個問題是關於什麼的......這可能是一個好主意,澄清它。