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

Python 3.x中如何将字符串变体归为同一类别进行计数?

如何在Python 3.x中将公司名称变体归为一类计数

你当前的代码仅能统计完全一致的名称,无法识别同一公司的不同变体。针对给出的案例,这里提供两种可行的解决方案:

一、基于规则提取核心名称(适合变体规律明确的场景)

你的案例中,公司名称变体均为「核心名称+后缀」形式(比如.uk、ltd、Ltd.),可通过简单的字符串分割提取核心名称后统计计数:

my_list = ['Telecom.uk', 'Telecom ltd', 'Telecom Ltd.', 'Vodafone Ltd.', 'Vodafone Ltd']
results = {}

for name in my_list:
    # 先按点分割取第一部分,再按空格分割取第一部分,得到核心名称
    core_name = name.split('.')[0].split()[0]
    # 可选:统一大小写避免因大小写差异导致的分组错误
    # core_name = core_name.lower().capitalize()
    
    if core_name in results:
        results[core_name] += 1
    else:
        results[core_name] = 1

print(results)

执行后输出:

{'Telecom': 3, 'Vodafone': 2}

若遇到更复杂的后缀(比如plc、Corp.、Inc等),可扩展规则,先列出常见后缀再从名称中剔除:

common_suffixes = {'ltd', 'Ltd', 'Ltd.', 'plc', 'Corp.', 'Inc', '.uk', '.com'}

def get_core_name(name):
    parts = name.split()
    # 移除末尾的后缀词
    while parts and parts[-1] in common_suffixes:
        parts.pop()
    # 移除包含后缀的域名部分
    core = ' '.join(parts).split('.')[0]
    return core

# 后续计数逻辑与之前一致

二、模糊匹配分组(适合变体无规律的场景)

如果公司名称变体存在拼写差异、缩写等无规律情况,可使用fuzzywuzzy库识别相似名称:

  1. 先安装依赖:
pip install fuzzywuzzy python-Levenshtein
  1. 实现代码:
from fuzzywuzzy import process
from collections import defaultdict

my_list = ['Telecom.uk', 'Telecom ltd', 'Telecom Ltd.', 'Vodafone Ltd.', 'Vodafone Ltd']
results = defaultdict(int)
unique_names = list(set(my_list))

for name in my_list:
    # 找到相似度最高的名称(阈值设为80,可按需调整)
    match, score = process.extractOne(name, unique_names, score_cutoff=80)
    # 提取匹配项的核心名称
    core_match = match.split('.')[0].split()[0]
    results[core_match] += 1

print(dict(results))

这种方法能处理更复杂的变体场景,但需根据实际情况调整相似度阈值,避免误分组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:25:23