【问题标题】:Using unicode (Hebrew characters) with regular expression使用带有正则表达式的 unicode(希伯来字符)
【发布时间】:2015-12-11 02:14:15
【问题描述】:

我编写了在网页中查找表达式的脚本:

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

如果我使用“正则”正则表达式(没有希伯来字符),则此脚本有效,并且如果我使用它们则不匹配任何内容。 我究竟做错了什么?

编辑 例子: 网址=https://en.wikipedia.org/wiki/Category:Countries

【问题讨论】:

  • 它怎么不工作?您收到错误消息吗?它根本无法匹配任何东西吗?它是否匹配不完全相同的事物?请提供示例。
  • 什么都不匹配
  • 你使用的是哪个版本的 Python,你能给我们一个 URL 来测试吗?另外,请注意nsregularexpression 指的是Apple 特定的正则表达式实现。我把那个标签换成了你的标准正则表达式标签。
  • 我不知道——这很简单。你能尝试一些更简单的例子,比如在一个短字符串中找到一个字母(比如,beth 或 gimel)吗?你能在其自身的副本中找到该字符串,例如 sre.findall(u"עברית", u"עברית") 吗?
  • @Prune - 我将re.findall(u"עברית", u"עברית") 粘贴到 2.7.9 REPL 中,它运行良好。如果没有 Sanich 给我们提供测试的 URL,我认为我们无法回答这个问题。

标签: python regex unicode


【解决方案1】:

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

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

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

所有东西都应该采用一致的编码,unicode 才能在 Python 2 中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 2014-09-24
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多