我如何获得一个正则表达式来识别非ASCII字符的信吗?(How do I get a regular

2019-07-29 00:20发布

我在瑞典的网页中提取信息。 此网页使用的字符,如:高龄津贴。

我的问题是,当我打印的信息高龄津贴都没有了。

我使用提取美丽的汤的信息。 我觉得现在的问题是,我做,我提取字符串,如一堆的正则表达式的location = re.sub(r'([^\w])+', '', location)来删除除一切这些信。 在此之前我想这美丽的汤编码字符串,以便高龄津贴成为像/ X02 /,十六进制值。

所以,如果我是正确的,那么正则表达式删除的高龄津贴,对了,我的意思是要留在十六进制数字的唯一的事情就是正则表达式后X,但没有x的,而不是我的网页上高龄津贴,所以这小理论也许是不正确? 无论如何,如果它是正确的还是错误的,你是怎么解决这个问题? 当我以后再打印所提取的信息到我的网页我使用谷歌应用程序引擎self.response.out.write()(不知道是不是在解决问题的帮助)

编辑:在瑞典网站上的编码是UTF-8和我的网站上的编码也是UTF-8。 EDIT2:您可以使用ISO-8859-10瑞典,但根据谷歌浏览器的编码是Unicode(UTF-8)在这个特定的网站

Answer 1:

以Unicode始终工作 ,只在必要时转换成编码表示。

对于这种特殊的情况,还需要使用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 öäå


Answer 2:

这将有助于如果你能在每次步骤之后转储字符串。

请检查您的价值re.UNICODE首先,看这个



文章来源: How do I get a regular expression to recognize non-ASCII characters as letters?