簡體   English   中英

使用python查找子字符串

[英]Find substring by using python

我從問答論壇中提取了一個原始字符串。 我有一個這樣的字符串:

s = 'Take about 2 + <font color="blue"><font face="Times New Roman">but double check with teacher <font color="green"><font face="Arial">before you do'

我想提取這個子字符串“ <font color="blue"><font face="Times New Roman"> ”並將其分配給一個新變量。 我可以用正則表達式刪除它,但我不知道如何將它分配給一個新變量。 我是正則表達式的新手。

import re
s1 = re.sub('<.*?>', '', s)

這是刪除子但我想保留刪除的子記錄,理想情況下將其重新分配給變量。

我怎樣才能做到這一點? 我可能更喜歡正則表達式。

雖然 bs4 更適合網頁抓取,但如果您對正則表達式沒問題,您可以執行以下操作

>>> import re
>>> s = 'Take about 2 + <font color="blue"><font face="Times New Roman">but double check with teacher <font color="green"><font face="Arial">before you do'
>>> regex = re.compile('<.*?>')
>>> regex.findall(s)
['<font color="blue">', '<font face="Times New Roman">', '<font color="green">', '<font face="Arial">']
>>> regex.sub('', s)
'Take about 2 + but double check with teacher before you do'

正則表達式並不是解析 HTML 組件的最簡單的工具。 您可以嘗試使用BeautifulSoup來解析組件並制作您的子字符串。

from bs4 import BeautifulSoup

s = """Take about 2 + <font color="blue">
       <font face="Times New Roman">but double check with teacher <font color="green">
       <font face="Arial">before you do"""


soup = BeautifulSoup(s, "html.parser")

打印html:

Take about 2 +
<font color="blue">
 <font face="Times New Roman">
  but double check with teacher
  <font color="green">
   <font face="Arial">
    before you do
   </font>
  </font>
 </font>
</font>

提取成分:

soup.font.font['face']
> 'Times New Roman'
soup.font["color"]
> 'blue'

現在制作並保存您的子字符串作為變量:

variable = f"<font color={soup.font.font['face']}><font face={soup.font.font['face']}>"

這會給你:

"<font color="blue"><font face="Times New Roman">"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM