【发布时间】:2012-04-27 06:00:28
【问题描述】:
我正在从瑞典语网页中提取信息。此页面使用的字符如下:öäå。
我的问题是,当我打印信息时,öäå 消失了。
我正在使用 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)
【问题讨论】:
-
我认为使用
BeautifulSoup的全部意义在于不使用正则表达式。 -
这可能是一个编码问题(UTF-8 与 ISO-8859-x,x 是用于瑞典语的任何代码页),但如果没有关于所使用编码的更多详细信息,就很难判断。跨度>
-
@JimGarrison 这次不行。这基本上是@jsbueno 的想法——你需要在
unicode中工作,而不是在编码文本上工作。
标签: python regex utf-8 character-encoding ascii