如何使用Python从html中删除高度和宽度标签?

时间:2013-02-12 10:28:17

标签: python

我的html包含这样的图片标记:

 <img alt="Alla_dj01" height="333" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg" width="500"

我想从标签中完全删除宽度和高度。我可以使用替换和删除标签,但高度和宽度值不断变化,因此如何干净地删除它有点令人困惑。

2 个答案:

答案 0 :(得分:3)

In [40]: import lxml.html as lh

In [41]: html = '''<img alt="Alla_dj01" height="333" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg" width="500"'''

In [42]: doc = lh.fromstring(html)

In [43]: for img in doc.xpath('//img'):
    ...:     for a in ['width','height']:
    ...:         img.attrib.pop(a)  # img.attrib is basically a dict
    ...:         

In [44]: print lh.tostring(doc,pretty_print=True)
<img alt="Alla_dj01" src="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2013-02-01/kjyqxkaqBICwbidlzEeCurhwpcilIGzDDcFrmlCcGDkftlbsedenbAGpFdbo/ALLA_DJ01.jpg.scaled500.jpg">

答案 1 :(得分:1)

如果您只有这样的单个元素,您应该能够使用基于正则表达式的搜索并轻松替换。

请参阅执行此操作的re.sub()函数。

作为一个起点,我尝试使用类似的东西:

stripped = re.sub(r'(height|width)=\"\d+\"', "", old_html)

您可以进一步改进以支持属性值的单引号,而不是假设该值将是所有数字,依此类推。