1
我試圖在許多HTML頁面中找到一個字符串「USB 2端口」。問題是這些字符串在它們之前有大量的空白空間 - 有時是4個,20個甚至50個空白字符。如何在HTML文檔中查找字符串,忽略空格?
與我的字符串前一個空格字符以下工作:
soup.find(text=' USB 2 ports')
注意USB之前的空單。
我怎樣才能知道美麗的湯的find()
找到我的字符串,而忽略所有前面的空白?
我試圖在許多HTML頁面中找到一個字符串「USB 2端口」。問題是這些字符串在它們之前有大量的空白空間 - 有時是4個,20個甚至50個空白字符。如何在HTML文檔中查找字符串,忽略空格?
與我的字符串前一個空格字符以下工作:
soup.find(text=' USB 2 ports')
注意USB之前的空單。
我怎樣才能知道美麗的湯的find()
找到我的字符串,而忽略所有前面的空白?
你可以定義一個regular expression搜索文本,無論開頭和結尾的空白:
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()
的結果賦值給一個變量,希望能夠更清楚地說明發生了什麼。爲了清晰起見,我最初是在示例代碼之後的代碼中對代碼進行了建模,但是現在我懷疑您可能對代碼的實際操作有些困惑。
出於某種原因,這將返回沒有,我用另一個字符串值嘗試過了,我得到了<_sre.SRE_Pattern對象在0x00000000028C2C50>當我試圖試圖打印模式 – Ninja2k
@ Ninja2k我認爲必須有一些其他的問題,你的代碼,然後;它對我來說是完美的(我上面添加的演示是一個來自Python 2.7.3解釋器的直接複製粘貼)。 –
另外:是的,當你打印'pattern'時,你會得到它,因爲它*是一個正則表達式模式。 'soup.find(text = pattern)'的返回值就是結果。 –