Pandas中筛选含特定字符串的URL:如何匹配文本语境中的ECB?
解决URL哈希参数外的ECB匹配问题
这事儿其实很简单,核心思路就是先把URL里哈希(#)后面的参数部分彻底去掉,只在前面的路径/域名部分做匹配,这样就不会误抓哈希参数里的ECB了。
直接给你修改后的代码:
分步实现(更清晰)
# 第一步:提取URL中#之前的有效部分,排除哈希参数 data['url_without_hash'] = data['SOURCEURL'].str.split('#').str[0] # 第二步:在处理后的URL里提取目标关键词 data['new'] = data['url_without_hash'].str.extract(f"({'|'.join(filter3)})", expand=False)
一行简化版
如果不想多生成一列,可以直接把两步合并:
data['new'] = data['SOURCEURL'].str.split('#').str[0].str.extract(f"({'|'.join(filter3)})", expand=False)
额外优化(可选)
如果你的filter3里的关键词需要大小写不敏感匹配(比如同时匹配ECB、ecb、Ecb),可以导入re模块加个忽略大小写的标志:
import re data['new'] = data['SOURCEURL'].str.split('#').str[0].str.extract( f"({'|'.join(filter3)})", expand=False, flags=re.IGNORECASE )
原理很直白:str.split('#').str[0]会把每个URL截断到第一个#出现的位置,哈希后的所有参数都会被丢弃,之后的提取操作只会在URL的路径/域名部分进行,完美避开你不想匹配的哈希参数段。
内容的提问来源于stack exchange,提问作者inneb
相关产品推荐
相关产品推荐

