2012-01-30 98 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