【问题标题】:Replace string between two delimiters in html [closed]替换html中两个分隔符之间的字符串[关闭]
【发布时间】:2022-01-06 09:09:16
【问题描述】:

如何替换分隔符 href="" 之间的某些字符串?

<td><a href="https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n" target="_blank">https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n</a></td>
    </tr>

我想替换这个:

href="https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n"

用这个:

href="LINK"

【问题讨论】:

  • 您编写了哪些代码来尝试执行此操作?根据How to Ask 的指导,您可以在这里以minimal reproducible example 的身份分享吗?你在哪里卡住?我们不会为您编写代码,但如果您能在此处发布之前证明您自己解决此问题的善意最低限度的尝试,我们可以提供帮助。当RegExp is not a good solution for parsing (X)HTML 被广泛接受时,您为什么选择使用re,因为您必须考虑大量的边缘情况。
  • 你用re标记了这个,但我认为你应该使用像BeautifulSoup这样的HTML库,而不是从头开始。
  • 我没有从网上抓取任何东西。我正在生成一个电子邮件正文并用数据框中的数据填充它。当我使用 df.to_html() 生成 HTML 代码时,它在邮件中显示为整个链接,用户无法阅读
  • @alb 谁说你从网上抓取任何东西......? “邮件中的整个链接都是这样显示的,用户无法阅读”您没有说明您期望或想要什么,也没有说明什么代码您已经写信(作为minimal reproducible example)来(a)首先生成此电子邮件,或(b)解决您描述的问题。请编辑您的问题以包含此信息以及How to Ask 规定的所有相关调试/上下文信息。就目前的情况而言,很难回答这个问题。

标签: python html re


【解决方案1】:

为了快速而肮脏的方式,您可以使用 re.sub() 来匹配“href”标签并将其替换为您自己的标签:

import re
html = """<td><a href="https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n" target="_blank">https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n</a></td>
    </tr>"""
re.sub('">.*<\/a>', '">LINK<\/a>" ' , html)

输出:

'<td><a href="LINK" target="_blank">https://forms.office.com/Pages/ResponsePage.aspx?id=uI1n</a></td>\n    </tr>'

但请记住,不建议使用正则表达式解析 HTML,因为它可能有很多边缘情况。当我完全知道输入 HTML 的结构时,我只会将其用于快速而肮脏的方式。对于更专业的方法,您应该研究 HTML 解析器(例如“beautifulsoup”)。

【讨论】:

  • 感谢您的回答,但正如@mplungjan 所说,我必须替换字符串的其他部分才能重命名超链接。所以 之后的部分是关闭的。会怎么样?
  • 我编辑了答案以反映您想要做什么。
  • @alb 查看更改。
  • 谢谢它的工作!
猜你喜欢
  • 2016-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-05
  • 1970-01-01
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
相关资源
最近更新 更多