使用python从第一个单元格HTML中删除文本
我有这个档案:使用python从第一个单元格HTML中删除文本,python,html,regex,html-parsing,Python,Html,Regex,Html Parsing,我有这个档案: <table> <tr> <td WIDTH="49%"> <p><a href="...1.htm"> cell to remove</a></p></td> <td WIDTH="51%"> some text </td> </tr> 一些文本 因此,我需要: <table&g
<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()
ret=open('rec1.txt').read()
re.sub(']+>,'',ret,1)
final=open('rec2.txt','w')
期末写作(ret)
final.close()
正如您所看到的,我刚开始使用python之类的东西,当我阅读rec2.txt时,它包含与上一个文件完全相同的文本
tks使用正则表达式解析HTML是一种非常糟糕的做法(请参见注释中的@Lutz Horn链接) 改用HTML解析器。例如,您可以使用以下方法将第一个
td
标记的值设置为空:
Beauty Soup是一个Python库,用于从HTML和HTML中提取数据
XML文件。它与您最喜欢的解析器一起工作,以提供惯用语法
导航、搜索和修改解析树的方法。信息技术
通常可以节省程序员数小时或数天的工作
从bs4导入美化组
data=”“”
一些文本
"""
soup=BeautifulSoup(数据'html.parser')
单元格=soup.table.tr.td
cell.string=“”
cell.attrs={}
打印soup.prettify(formatter='html')
印刷品:
<table>
<tr>
<td>
</td>
<td width="51%">
some text
</td>
</tr>
</table>
一些文本
另见:
希望能有所帮助。使用正则表达式解析HTML是一种非常糟糕的做法(请参阅注释中的@Lutz Horn链接) 改用HTML解析器。例如,您可以使用以下方法将第一个
td
标记的值设置为空:
Beauty Soup是一个Python库,用于从HTML和HTML中提取数据
XML文件。它与您最喜欢的解析器一起工作,以提供惯用语法
导航、搜索和修改解析树的方法。信息技术
通常可以节省程序员数小时或数天的工作
从bs4导入美化组
data=”“”
一些文本
"""
soup=BeautifulSoup(数据'html.parser')
单元格=soup.table.tr.td
cell.string=“”
cell.attrs={}
打印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()
#/usr/bin/python
进口稀土
ret=open('rec1.txt')。read()
ret=re.sub('','',ret,1,re.DOTALL)
final=open('rec2.txt','w')
期末写作(ret)
final.close()
注:
- 表达式
表示以任何顺序匹配[/td]
、/
或t
中的任何一个。请注意,我是如何使用d
匹配后跟*
的任意字符串的/td
的最后一个可选参数是flags参数re.sub()
允许re.DOTALL
匹配新行
意味着执行非贪婪搜索,因此它只消耗一个单元格?
返回生成的字符串,它不会就地修改字符串re.sub()
- 使用正则表达式解析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()
#/usr/bin/python
进口稀土
ret=open('rec1.txt')。read()
ret=re.sub('','',ret,1,re.DOTALL)
final=open('rec2.txt','w')
期末写作(ret)
final.close()
注:
- 表达式
表示以任何顺序匹配[/td]
、/
或t
中的任何一个。请注意,我是如何使用d
匹配后跟*
的任意字符串的/td
的最后一个可选参数是flags参数re.sub()
允许re.DOTALL
匹配新行
意味着执行非贪婪搜索,因此它只消耗一个单元格?
返回生成的字符串,它不会就地修改字符串re.sub()