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

使用openpyxl统计含特定值行数并按州整理关键词

问题解决:用openpyxl统计州的提及次数并整理关键词

仅用openpyxl完全可以实现你的需求,不需要额外依赖库。你的现有代码存在两个核心问题:

  • 调用state.count('Missouri')是统计当前单个字符串里的关键词出现次数,每次匹配到自然只会输出1,没有做全局的计数累加
  • 缺少存储各州对应关键词的逻辑,无法最终整理成你需要的字符串格式

下面是修正后的完整实现代码:

import openpyxl

# 加载工作簿和激活工作表
path = "testExcel.xlsx"
wb_object = openpyxl.load_workbook(path)
sheet_object = wb_object.active

row = sheet_object.max_row
column = sheet_object.max_column
print("Total Rows:", row)
print("Total Columns:", column)

# 初始化两个字典:分别存储各州的提及次数、对应关键词列表
state_count = {}
state_keywords = {}

# 遍历数据行(假设数据从第2行开始,若你的数据起始行不同,修改range的起始值即可)
for i in range(2, row + 1):
    # 获取第4列的州值,按逗号分割取第一个并去除前后空格
    state_cell = sheet_object.cell(row=i, column=4)
    if not state_cell.value:
        continue  # 跳过空值行
    state = state_cell.value.split(",")[0].strip()
    
    # 获取关键词(假设关键词在第1列,根据你的实际表格调整列号)
    keyword_cell = sheet_object.cell(row=i, column=1)
    keyword = keyword_cell.value.strip() if keyword_cell.value else ""
    
    # 累加州的提及次数
    if state in state_count:
        state_count[state] += 1
    else:
        state_count[state] = 1
    
    # 收集对应州的关键词
    if state in state_keywords:
        state_keywords[state].append(keyword)
    else:
        state_keywords[state] = [keyword]

# 输出统计结果和整理后的关键词字符串
print("\n各州提及次数:")
for state, count in state_count.items():
    print(f"{state}: {count} 次")

print("\n整理后的关键词字符串:")
for state, keywords in state_keywords.items():
    keyword_str = ", ".join(keywords)
    print(f'{state} = "{keyword_str}"')

print("All good")

关键逻辑说明:

  1. 用state_count字典实现全局计数累加,每次遇到对应州就将计数加1
  2. 用state_keywords字典存储每个州的关键词列表,遍历过程中持续追加对应关键词
  3. strip()方法用于去除字符串前后空格,避免因单元格内容带空格导致的匹配失败
  4. 最后通过", ".join(keywords)将关键词列表转换为你需要的逗号分隔字符串格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 15:15:42