以下の文字列からいくつかの情報を抽出しようとしています
>>> st = '''
... <!-- info mp3 here -->
... 192 kbps<br />2:41<br />3.71 mb </div>
... <!-- info mp3 here -->
... 3.49 mb </div>
... <!-- info mp3 here -->
... 128 kbps<br />3:31<br />3.3 mb </div>
... '''
>>>
以下の正規表現を使用すると、出力は次のようになります
>>> p = re.findall(r'<!-- info mp3 here -->\s+(.*?)<br />(.*?)<br />(.*?)\s+</div>',st)
>>> p
[('192 kbps', '2:41', '3.71 mb'), ('128 kbps', '3:31', '3.3 mb')]
しかし、私の必要な出力は
[('192 kbps', '2:41', '3.71 mb'),(None,None,'3.49mb'), ('128 kbps', '3:31', '3.3 mb')]
だから、私の質問は、すべての条件に一致するように上記を変更する方法です.現在の正規表現はタグregex
に厳密に依存していると信じているので、それを条件付きにする方法.<br />
HTMLを解析するために正規表現を使用すべきではないことはわかっていますが、現在これが私にとって最も適切な方法です。