0

テキスト抽出を行うために、Django を介して BeautifulSoup を使用しようとしています。理解できない以下に至る奇妙なバグがあります。

標準の Python プロンプトで次を発行すると、次のようになります。

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

期待どおり、 の出力が得られますNone。しかし、このコードを sgmllib.py (Django が Web サイト経由で長い一連の呼び出しを通じて最終的に呼び出します) に入れると、Pythonこれにうまく一致し、オブジェクトを返します。Django が何らかの理由で上記の文字列を無視しているように見えxます。これはユニコード設定などに関連していると思いますが、バニラの Python 2.6 セッションでこのコードを自分で実行した場合とは対照的に、なぜ Django の実行が異なるのかを理解できないようです。

上記の正規表現は、通常の実行では一致しないのに、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 に答える