0

我们正在尝试通过 Django 使用 BeautifulSoup 进行一些文本提取。我们有一个奇怪的错误,我们已经追溯到以下我们不理解的错误。

如果我们在标准 Python 提示符下发出以下命令:

import re
print re.match("&#([0-9]+)[^0-9]","»")

None正如预期的那样,我们得到 的输出。但是,当我们将此代码放入 sgmllib.py(Django 最终通过我们的网站通过一长串调用调用)时,Python确实成功地匹配了它,并返回了一个对象。在我们看来,好像 Django 以某种方式忽略x了上面的字符串。我认为这必须与 unicode 设置有关,等等,但我们似乎无法弄清楚为什么 Django 的运行方式与我们自己在普通 Python 2.6 会话中运行此代码时不同。

为什么上面的正则表达式在正常运行时匹配,但在 Django 尝试时匹配?

4

1 回答 1

0

'x' 是您正在测试的字符串的一部分。如果您不在正则表达式中考虑它,那么它将不匹配。Python 工作正常。如果 Django 的行为不同,我会感到惊讶,但也许其他地方存在错误。如果添加 'x' 在 Django 中给你带来问题,你可以试试这个:

>>> rc = re.match("&#[xX]?([0-9]+)","»")
>>> rc.group(1)
'00'
于 2012-11-28T09:24:03.973 回答