26

サブセットを抽出したい文字列があります。これは、より大きな Python スクリプトの一部です。

これは文字列です:

import re

htmlString = '</dd><dt> Fine, thank you.&#160;</dt><dd> Molt bé, gràcies. (<i>mohl behh, GRAH-syuhs</i>)'

抜きたいのは「Molt bé, gràcies. mohl behh, GRAH-syuhs」。そのために、次を使用して正規表現を使用しre.searchます。

SearchStr = '(\<\/dd\>\<dt\>)+ ([\w+\,\.\s]+)([\&\#\d\;]+)(\<\/dt\>\<dd\>)+ ([\w\,\s\w\s\w\?\!\.]+) (\(\<i\>)([\w\s\,\-]+)(\<\/i\>\))'

Result = re.search(SearchStr, htmlString)

print Result.groups()
AttributeError: 'NoneType' object has no attribute 'groups'

が機能しないためResult.groups()、作成したい抽出 (つまりResult.group(5)およびResult.group(7)) も機能しません。しかし、なぜこのエラーが発生するのかわかりませんか? 正規表現は TextWrangler では機能しますが、Python では機能しないのはなぜですか? Python初心者です。

4

2 に答える 2

53

メソッドがない をAttributeError呼び出しgroupsているため、取得しています。None

regex.search返さNoneれるということは、正規表現が指定された文字列からパターンに一致するものを見つけることができなかったことを意味します。

正規表現を使用する場合、一致したかどうかを確認すると便利です。

Result = re.search(SearchStr, htmlString)

if Result:
    print Result.groups()
于 2013-03-05T20:20:44.693 に答える