-1

我的 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"

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

4

2 回答 2

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">
于 2013-02-12T10:44:31.303 回答
1

如果你只有一个这样的元素,你应该能够很容易地使用基于正则表达式的搜索和替换。

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

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

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

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

于 2013-02-12T10:33:51.643 回答