我正在从瑞典语网页中提取信息。此页面使用的字符如下:öäå。
我的问题是,当我打印信息时,它们就消失了。
我正在使用 Beautiful Soup 提取信息。我认为问题在于我对提取的字符串执行了一堆正则表达式,例如location = re.sub(r'([^\w])+', '', location)
删除除字母之外的所有内容。在此之前,我猜测 Beautiful Soup 对字符串进行了编码,以便 öäå 变成类似 /x02/ 的十六进制值。
因此,如果我是正确的,那么正则表达式将删除 öäå,对吧,我的意思是,十六进制字符中唯一应该留下的是正则表达式之后的 x,但是我的页面上没有 x 代替 öäå,所以这小理论也许不正确?无论如何,无论是对还是错,你如何解决这个问题?当我稍后将提取的信息打印到我的网页时,我在谷歌应用程序引擎中使用 self.response.out.write() (不知道这是否有助于解决问题)
编辑:瑞典网站上的编码是utf-8,我网站上的编码也是utf-8。
EDIT2:您可以对瑞典语使用 ISO-8859-10,但根据 google chrome,此特定站点上的编码是 Unicode(utf-8)
始终以 unicode 工作并且仅在必要时转换为编码表示。
对于这种特殊情况,您还需要使用re.U http://docs.python.org/library/re.html#re.U标记如此\w
匹配 unicode 字母:
#coding: utf-8
import re
location = "öäå".decode('utf-8')
location = re.sub(r'([^\w])+', '', location, flags=re.U)
print location # prints öäå
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)