在正则表达式中使用Unicode(希伯来字符)

3
我编写了一个脚本,用于在网页中查找表达式:
import sre, urllib2, sys, BaseHTTPServer
# -*- coding: utf-8 -*-    
address = sys.argv[1]
web_handle = urllib2.urlopen(address)
website_text = website_handle.read()    
matches = sre.findall(u"עברית", website_text)
for item in matches:
    print iten

如果我使用“普通”的正则表达式(不包含希伯来字符),那么此脚本可以工作,但如果我使用它们,则无法匹配任何内容。

编辑 示例: url = https://en.wikipedia.org/wiki/Category:Countries


它为什么不工作?你收到错误消息吗?它是否完全无法匹配任何内容?它是否匹配了不同的内容?请提供示例。 - Prune
完全不匹配任何东西 - Sanich
你使用的是哪个版本的Python,并且能给我们一个测试URL吗?另外,只是一个小提醒,nsregularexpression 是苹果特定实现的正则表达式。我已经为您将该标签更换为标准的正则表达式标签。 - ArtOfWarfare
我不知道 - 这很简单。你能试一些更简单的例子吗?比如在一个短字符串中找到一个字母(比如贝特或吉梅尔)?你能在自身的副本中找到该字符串,例如sre.findall(u"עברית", u"עברית")吗? - Prune
3
@Prune - 我将re.findall(u"עברית", u"עברית")直接粘贴到2.7.9 REPL中,它可以正常工作。我认为如果Sanich给我们一个要测试的URL,我们才能回答这个问题。 - ArtOfWarfare
显示剩余2条评论
1个回答

5

您需要确保输入字符串也是UTF8格式。

使用unicode函数,将utf-8作为第二个参数:

website_text = unicode(website_text, "utf-8")

在Python 2中,要使unicode正常工作,所有内容都需要使用一致的编码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接