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

Python如何按子串匹配规则将网址列表批量替换为对应应用名

实现方案

这个需求完全可以实现,因为待匹配的应用列表X总长度不到100,就算Y的总量超过10万条,遍历匹配也不会有明显的性能问题。

核心匹配逻辑说明

  • 默认采用不区分大小写的子串匹配,符合你给出的示例效果(小写的microsoft匹配X中的Microsoft、GoldenApple中的Apple匹配X中的Apple)
  • 示例中默认匹配到第一个符合条件的应用名就结束匹配,如果出现一个url同时包含多个X中的元素的场景,可以自行调整逻辑返回所有匹配结果,或者按优先级匹配。

基础实现代码(两层循环,易理解)

# 你的原始数据
X = ["Microsoft", "Apple", "Nike", "Adidas"]
Y = ["microsoft.com/123", "microsoft.com/456", "GoldenApple.com", "nike.cn/home", "test.adidas.com/product"]

# 提前把应用名转为小写,方便后续不区分大小写匹配
lower_x_list = [item.lower() for item in X]
processed_Y = []

for url in Y:
    lower_url = url.lower()
    matched_app = None
    for index, lower_app_name in enumerate(lower_x_list):
        if lower_app_name in lower_url:
            # 匹配到就取X中对应的原应用名
            matched_app = X[index]
            # 匹配到第一个就退出,如果要全匹配可以去掉这行break
            break
    # 没匹配到就保留原始url
    processed_Y.append(matched_app if matched_app else url)

print(processed_Y)

运行后输出结果为:
['Microsoft', 'Microsoft', 'Apple', 'Nike', 'Adidas']

高性能实现代码(正则预编译,适合Y数据量大的场景)

提前把所有应用名编译成正则表达式,一次扫描即可完成匹配,比两层循环性能更高:

import re

X = ["Microsoft", "Apple", "Nike", "Adidas"]
Y = ["microsoft.com/123", "microsoft.com/456", "GoldenApple.com", "nike.cn/home", "test.adidas.com/product"]

# 拼接正则规则,re.escape避免应用名里有特殊正则字符导致匹配异常,re.IGNORECASE开启不区分大小写匹配
app_pattern = re.compile("|".join(map(re.escape, X)), flags=re.IGNORECASE)

def url_replace(url: str) -> str:
    match_res = app_pattern.search(url)
    # 匹配到就返回匹配到的文本,没匹配到返回原url
    return match_res.group() if match_res else url

processed_Y = [url_replace(u) for u in Y]

运行结果和基础版完全一致。

内容的提问来源于stack exchange,提问作者Counting JR

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:00:00