![](/img/trans.png)
[英]How to strip(not remove) specified tags from a html string using Python?
[英]How to strip height and width tags from a html using 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"
我想从标签中完全删除宽度和高度。 我可以使用replace和remove标记,但是高度和宽度值会不断变化,因此如何清除它有点令人困惑。
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">
如果只有这样的单个元素,则应该能够使用基于正则表达式的搜索并非常容易地进行替换。
请参见re.sub()
函数。
作为起点,我将尝试使用以下方法:
stripped = re.sub(r'(height|width)=\"\d+\"', "", old_html)
您可以进一步改善此属性,以支持属性值的单引号,而不是假定该值将是全数字,依此类推。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.