前後の空白に関係なく、テキストを検索する正規表現を定義できます。
import re
pattern = re.compile(r'\s*%s\s*' % 'USB 2 ports')
result = soup.find(text=pattern)
例えば:
>>> soup = BeautifulSoup("""
... <html>
... <body>
... <ul>
... <li>
... USB 2 ports
... </li>
... <li>
... Firewire ports
... </li>
... <li>
... HDMI ports
... </li>
... </ul>
... </body>
... </html>
... """)
>>> import re
>>> pattern = re.compile(r'\s*%s\s*' % 'USB 2 ports')
>>> soup.find(text=pattern)
u'\n USB 2 ports\n '
編集soup.find()
:何が起こっているのかをより明確にすることを期待して、変数に結果を明示的に割り当てるように上記のコードを変更しました。明確にするために、最初はサンプルコードの後に私の回答のコードをモデル化しましたが、そのコードが実際に何をするかについて多少混乱している可能性があると思います。