Python:从文本中删除<table> </table>之间的文本

时间:2014-11-23 05:25:56

标签: python regex parsing

我在Python中使用regex仍然相对较新,我很难找到一种方法来删除非常简单的.txt文件中的标记之间的内容。例如,见file

以下是我尝试的内容:

fdir = open("C:\\file.txt")
line = fdir.read()
line = line.lower()
pattern = re.compile("(?is)<table[^>]*>(.*?)<\/table>", re.MULTILINE)
line = pattern.sub('', line)

fdir = open("C:\\file.txt")
line = fdir.read()
line = re.sub(r"(?is)<table[^>]*>(.*?)<\/table>", '', line, re.DOTALL)

这两个代码只删除了我的文本文件中的标记<Table><\Table>,而不是之间的标记。我的代码中缺少什么? 我也想删除标签。

2 个答案:

答案 0 :(得分:2)

您应该考虑使用BeautifulSoup删除这些标记...

>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup(html)
>>> for t in soup.find_all('table'):
...     t.decompose()

答案 1 :(得分:1)

使用 re.sub

line = re.sub("(?is)<table[^>]*>(.*?)<\/table>", "", line)

我同意Tomalak(请参阅下面的评论):HTML shouldn't be parsed using regex - 此答案仅供演示,不应在生产代码中使用。