如何将html实体转换为符号?

时间:2009-04-08 02:32:18

标签: python unicode beautifulsoup html-entities

我对the script from this answer进行了一些调整。我有unicode的问题。有些问题最终写得不好。

一些答案​​和回答最终看起来像:

Yeah.. I know.. I’m a simpleton.. So what’s a Singleton? (2)

如何将’翻译成正确的角色?

注意:如果重要的话,我在法语窗口上使用python 2.6。

>>> sys.getdefaultencoding()
'ascii'
>>> sys.getfilesystemencoding()
'mbcs'

EDIT1:根据Ryan Ginstrom的帖子,我已经能够纠正部分输出,但我遇到了python的unicode问题。

在Idle / python shell中:

  

是的..我知道..我是一个傻瓜......所以   什么是单身人士?

在文本文件中,重定向stdout时

  

是啊..我知道..我是一个傻瓜......所以   什么是单身人士?

我该如何纠正?


Edit2:我尝试过Jarret Hardie的解决方案,但它没有做任何事情。 我在Windows上,使用python 2.6,所以我的site-packages文件夹位于:

  

C:\ Python26 \ LIB \站点包

没有siteconfig.py文件,所以我创建了一个,粘贴了Jarret Hardie提供的代码,启动了一个python解释器,但似乎还没有加载。

  
    
      

sys.getdefaultencoding()       'ASCII'

    
  

我注意到有一个site.py文件:

  

C:\ Python26 \ LIB \ site.py

我尝试更改函数

中的编码
def setencoding():
    """Set the string encoding used by the Unicode implementation.  The
    default is 'ascii', but if you're willing to experiment, you can
    change this."""
    encoding = "ascii" # Default value set by _PyUnicode_Init()
    if 0:
        # Enable to support locale aware default string encodings.
        import locale
        loc = locale.getdefaultlocale()
        if loc[1]:
            encoding = loc[1]
    if 0:
        # Enable to switch off string to Unicode coercion and implicit
        # Unicode to string conversion.
        encoding = "undefined"
    if encoding != "ascii":
        # On Non-Unicode builds this will raise an AttributeError...
        sys.setdefaultencoding(encoding) # Needs Python Unicode build !

将编码设置为utf-8。它工作(当然重启python之后)。

>>> sys.getdefaultencoding()
'utf-8'

令人遗憾的是,它没有纠正我程序中的字符。 :(

2 个答案:

答案 0 :(得分:1)

您应该能够将HTMl / XML实体转换为Unicode字符。在SO中查看这个答案:

Decoding HTML Entities With Python

基本上你想要这样的东西:

from BeautifulSoup import BeautifulStoneSoup

soup = BeautifulStoneSoup(urllib2.urlopen(URL),
                          convertEntities=BeautifulStoneSoup.ALL_ENTITIES)

答案 1 :(得分:0)

更改siteconfig.py中的默认编码是否有效?

在您的站点包文件中(在我的OS X系统上,它位于/Library/Python/2.5/site-packages/)中创建一个名为siteconfig.py的文件。在这个文件中:

import sys
sys.setdefaultencoding('utf-8')

处理完siteconfig.py后,会从sys模块中删除setdefaultencoding方法,因此必须将其放在site-packages中,以便Python在解释器启动时读取它。