You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中提取两个字符间的子串,从HTML字符串中获取颜色名

Python实现提取颜色列表的方法

方法1:使用正则表达式精准匹配(推荐)

因为所有颜色都在href以/colours/开头的<a>标签内,直接用正则匹配可以一步得到结果,避免提取到多余内容:

import re
import html

# 原始转义字符串
raw_str = '''&lt;p&gt;&lt;topic url=&quot;car-colours&quot;&gt;Toyota Camry&lt;/topic&gt; has &lt;a href=&quot;/colours/dark-red&quot;&gt;Dark Red&lt;/a&gt;&lt;span&gt; (2020)&lt;/span&gt;, &lt;a href=&quot;/colours/pearl-white&quot;&gt;Pearl White&lt;/a&gt;&lt;span&gt; (2016 - 2017)'''

# 还原HTML转义字符为正常符号
processed_str = html.unescape(raw_str)

# 正则匹配a标签内的颜色文本,捕获组对应颜色名
toyota_camry_colours = re.findall(r'<a href="/colours/[^"]+">([^<]+)</a>', processed_str)

print(toyota_camry_colours)
# 输出:['Dark Red', 'Pearl White']

方法2:按指定规则提取>和<之间的内容后筛选

如果你需要严格按照提取>和<中间子串的思路实现,可参考以下代码:

import html

raw_str = '''&lt;p&gt;&lt;topic url=&quot;car-colours&quot;&gt;Toyota Camry&lt;/topic&gt; has &lt;a href=&quot;/colours/dark-red&quot;&gt;Dark Red&lt;/a&gt;&lt;span&gt; (2020)&lt;/span&gt;, &lt;a href=&quot;/colours/pearl-white&quot;&gt;Pearl White&lt;/a&gt;&lt;span&gt; (2016 - 2017)'''
processed_str = html.unescape(raw_str)

# 提取所有><之间的非空内容
parts = []
start = 0
while True:
    start = processed_str.find('>', start)
    if start == -1:
        break
    start += 1
    end = processed_str.find('<', start)
    if end == -1:
        break
    part = processed_str[start:end].strip()
    if part:
        parts.append(part)
    start = end

# 过滤掉非颜色的冗余内容
exclude_set = {'Toyota Camry', 'has', '(2020)', ',', '(2016 - 2017)'}
toyota_camry_colours = [p for p in parts if p not in exclude_set]

print(toyota_camry_colours)
# 输出:['Dark Red', 'Pearl White']

内容的提问来源于stack exchange,提问作者markovv.sim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:24:05