如何用python从这个例子中删除<table>结构?

2024-06-16 13:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用python从HTML中删除“table”?你知道吗

我遇到过这样的情况:

paragraph = '''
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem molestiae consequuntur officiis corporis sint.<br /><br />
<table>
<tr>
<td>
    text title
</td>
<td>
    text title 2
</td>
</tr>
</table>
<p> lorem ipsum</p>
'''

如何使用python删除具有上述表结构的内容? 我希望输出结果如下:

paragraph = '''
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem molestiae consequuntur officiis corporis sint.<br /><br />
<p> lorem ipsum</p>
'''

Tags: brtabletdipsumloremdolorametsit
3条回答

您也可以尝试这种基本的字符串格式

paragraph = paragraph[:paragraph.find('<table>')] +     # Find the starting letter of '<table>'
            paragraph[paragraph.find('</table>')+       # Find the starting letter of </table>
            (len('<\table>')+1):]                       # Add 1 because length starts from zero

print(paragraph)

甚至这种方法也可以用于基本的文本提取

使用regex很复杂,这是我建议的一种愚蠢的方式:

def remove_table(s):
    left_index = s.find('<table>')
    if -1 == left_index:
        return s
    right_index = s.find('</table>', left_index)
    return s[:left_index] + remove_table(s[right_index + 8:])

结果中可能有一些空行。你知道吗

你可以使用^{}尤其是^{}

In [16]: from bs4 import BeautifulSoup

In [17]: soup = BeautifulSoup("""<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem molestiae consequuntur officiis corporis sint.<br /><br />
   ....: <table>
   ....: <tr>
   ....: <td>
   ....:     text title or some
   ....: </td>
   ....: </tr>
   ....: </table>
   ....: <p> lorem ipsum</p>""")

In [18]: _ = soup.table.extract()

In [19]: soup
Out[19]: 
<html><body><p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Quidem molestiae consequuntur officiis corporis sint.<br/><br/>
</p>
<p> lorem ipsum</p></body></html>

相关问题 更多 >