2012-01-30 176 views
0

我有一個美麗的湯的問題。 我嘗試GED在一個字符串去掉html標籤的,所以我有以下功能Python美麗的湯編碼

def cleanHtml(self, html): 
    try: 
     soup = BeautifulSoup(html); 
     content = soup.findAll(text=True) 
     return ''.join(content); 
    except: 
     print html 

當我現在做的事:

print {'title' : string_with_german_umlauts} 
print {'title' : self.cleanHtml(string_with_german_umlauts)} 

我碰到下面的輸出字符串「萊德爾Gürtel」 (意思是皮帶)

{'title': 'Leder G\xc3\xbcrtel'} 
{'title': u'Leder G\xfcrtel'} 

正確的編碼當然是\ xc3 \ xbc的變音符'ü'。 努力了整整一天得到這個工作後,我就放棄了,問;-)

我感謝所有幫助 THX

+0

如果這可以幫助你:''G \ XC3 \ xbcrtel''是一個字節字符串,'u'G \ xfcrtel''是一個codepoint-string(「Unicode字符串」),相當於'u'G \ u00fcrtel''。 ''G \ xc3 \ xbcrtel'.decode('UTF-8')'返回'u'G \ u00fcrtel''。在進行調試時,請考慮在每一步中數據是以字節還是代碼點的形式存在,以及在哪一個與另一個之間進行轉換時,請考慮使用了哪種編碼。 – wberry 2012-01-31 19:15:57

回答

0

,你有你的結果變音是預期的行爲的事實。美麗的湯處理unicode,所以這是預期的。這裏有什麼問題?難道你沒有看到字典裏的變音嗎?如果是這樣,這不是一個問題了,因爲當你打印變音符將是正確可見:

>>> d = {'title': u'Leder G\xfcrtel'} 
>>> for k in d:  
...  print k, d[k] 
... 
title Leder Gürtel 

希望這有助於

+0

我並不是mongoDB的專家,但是你可能想在你的問題中提到,這樣一個熟悉mongo的人會接受並幫助你。另外,你沒有提到實際問題 – inspectorG4dget 2012-01-30 18:22:57

+0

我在我的mongoDB中插入字典。這就是爲什麼我看到奇怪的行爲,例如端字符(\ u7aef)而不是'ü'。 – thesonix 2012-01-30 18:24:07

+0

謝謝。但是什麼樣的編碼是\ u7aef? UTF-8是\ xc3 \ xbc。 – thesonix 2012-01-30 18:25:32