2013-03-25 186 views
0

我试图抓住一个网站,其中存在unicode字符。我在很begining -*- coding: utf-8 -*-说加上我用re.UNICODE标志寻找正则表达式,unicode模式

pattern = re.compile('(?:{}|{})'.format(regex, regex1), re.UNICODE) 

然而,当我打印输出我还是让这些怪异字符像

我该如何解决呢?谢谢!

+1

仅仅因为你的字体不支持各自的Unicode字符,你可能会得到 字形。 – nwellnhof 2013-03-25 23:16:18

+0

它做百分之百。 – nutship 2013-03-26 07:44:26

+1

您必须首先解码来自网站的UTF-8文本。例如,请参阅[此问题](http://stackoverflow.com/questions/10293234/why-wont-python-display-this-text-correctly-utf-8-decoding-issue)。 – nwellnhof 2013-03-27 00:48:08

回答

1

这可能不是一个“答案”,但是你可以尝试使用http://www.debuggex.com来调试你的正则表达式。

+0

好吧,我会从这里学习http://www.regular-expressions.info/unicode.html – nutship 2013-03-25 22:50:33

+0

你应该把它当作评论而不是答案。 – beerbajay 2013-03-25 23:07:31

+0

不知道为什么(可能是因为我的stackoverflow声望不够高?),但我似乎没有选择留下评论,除了我自己的答案...似乎并不正确,但... – relic 2013-03-26 02:36:23

4

仅仅因为它具有非拉丁字符的页面并不意味着它使用unicode编码(还有,哪个unicode编码?utf-8?utf-16?)。

此外,re.UNICODE可能不会做你认为它的作用。从文档:

根据Unicode字符属性数据库设置'\ w,\ W,\ b,\ B,\ d,\ D,\ s`和`\ S`。

所有这一切意味着这些特定的字符类更广泛地定义,它对源文本没有影响。

此外,coding definition,-*- coding: utf-8 -*-仅指定您的源文件的编码

最后,如其中一个注释所述, 可以是使用当前字体不支持的字符的结果。反过来,这可能是假定某种编码,而文本以不同编码编码的结果。

+0

谢谢,但我还在挣扎。我确定它是'utf-8' – nutship 2013-03-26 07:56:54