gpt4 book ai didi

Python re.sub 替换html属性

转载 作者:搜寻专家 更新时间:2023-10-31 22:38:27 24 4
gpt4 key购买 nike

我正在尝试通过 html 代码调整图像的大小。这是一个例子:

我的目标是将 "height="108" "和 "width="150" 替换为高度和宽度 400。我尝试了以下几行,但它们似乎不起作用:

re.sub(r'width="[0-9]{2,4}"','width="400"',x)
re.sub(r'height="[0-9]{2,4}"','height="400"',x)

有人有解决办法吗?Ps:我不太擅长正则表达式... :)

最佳答案

它不起作用的原因是因为字符串是不可变的,并且您不处理结果。您可以通过以下方式“解决”问题:

<b>x = </b>re.sub(r'width="[0-9]{2,4}"','width="400"',x)
<b>x = </b>re.sub(r'height="[0-9]{2,4}"','height="400"',x)

也就是说,用正则表达式处理 HTML/XML 是一个非常糟糕的主意。假设你有一个标签 <foo altwidth="1234"> .现在您将其更改为 <foo altwidth="400">你想要那个吗?可能不是。

例如,您可以使用 BeautifulSoup:

soup = BeautifulSoup(x,'lxml')

for tag in soup.findAll(attrs={"width":True})
tag.width = 400
for tag in soup.findAll(attrs={"height":True})
tag.height = 400
x = str(soup)

这里我们用 width 替换所有 标签属性为 width="400"以及所有带有 height 的标签与 height="400" .您可以通过例如 仅接受 <img> 来使其更高级标签,例如:

soup = BeautifulSoup(x,'lxml')

for tag in soup.findAll(<b>'img'</b>,attrs={"width":True})
tag.width = 400
for tag in soup.findAll(<b>'img'</b>,attrs={"height":True})
tag.height = 400
x = str(soup)

关于Python re.sub 替换html属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42837740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com