[英]Remove text from HTML files but keep the javascript and structure using python
[英]Remove text from first cell HTML using python
我有這個文件:
<table>
<tr>
<td WIDTH="49%">
<p><a href="...1.htm"> cell to remove</a></p></td>
<td WIDTH="51%"> some text </td>
</tr>
因此,我需要:
<table>
<tr>
<td>
</td>
<td WIDTH="51%"> some text </td>
</tr>
我正在嘗試使用此html讀取文件,並用一個空標簽替換我的第一個標簽:
ret = open('rec1.txt').read()
re.sub('<td[^/td>]+>','<td> </td>',ret, 1)
final= open('rec2.txt', 'w')
final.write(ret)
final.close()
如您所見,我是使用python等的新手,當我閱讀rec2.txt時,它包含與先前文件完全相同的文本。
TKS
使用正則表達式解析HTML是一種非常糟糕的做法(請參閱注釋中的@Lutz Horn的鏈接)。
請改用HTML解析器。 例如,以下是使用BeautifulSoup將第一個td
標簽的值設置為空的方法:
Beautiful Soup是一個Python庫,用於從HTML和XML文件中提取數據。 它與您最喜歡的解析器一起使用,提供了導航,搜索和修改解析樹的慣用方式。 通常可以節省程序員數小時或數天的工作時間。
from bs4 import BeautifulSoup
data = """
<table>
<tr>
<td WIDTH="49%">
<p><a href="...1.htm"> cell to remove</a></p>
</td>
<td WIDTH="51%">
some text
</td>
</tr>
</table>"""
soup = BeautifulSoup(data, 'html.parser')
cell = soup.table.tr.td
cell.string = ''
cell.attrs = {}
print soup.prettify(formatter='html')
打印:
<table>
<tr>
<td>
</td>
<td width="51%">
some text
</td>
</tr>
</table>
也可以看看:
希望能有所幫助。
使用正則表達式解析HTML是非常不好的做法。 如果您實際上是在嘗試修改HTML,請使用HTML解析器。
如果問題是學術性的,或者您只想進行問題中描述的有限轉換,則可以使用以下正則表達式程序:
#!/usr/bin/python
import re
ret = open('rec1.txt').read()
ret = re.sub('<td.*?/td>','<td> </td>',ret, 1, re.DOTALL)
final= open('rec2.txt', 'w')
final.write(ret)
final.close()
筆記:
[/td]
表示匹配中的任一項 /
, t
,或d
以任何順序。 注意,請注意我是如何使用.*
來匹配后跟/td
的任意字符串的。 re.sub()
的最后一個可選參數是flags參數。 re.DOTALL
允許.
匹配新行。 ?
表示執行非貪婪搜索,因此它只會消耗一個單元格。 re.sub()
返回結果字符串,它不會修改該字符串。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.