[英]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.