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

如何用Python调用Excel列匹配用户输入的任意国家代码?

解决方案

你的代码存在几个明显问题:

  • 变量名冲突:循环里用cc当遍历变量,直接覆盖了用户输入的国家代码变量
  • 重复读取同一列数据,做了冗余操作
  • 匹配判断的代码没写完

下面是修改后的完整代码,能实现统计用户输入的任意3位国家代码在Excel第3列中的匹配次数:

import pylightxl as xl

# 读取Excel文件
with open('city.xlsx', 'rb') as f:
    db = xl.readxl(f)

# 获取Sheet1第3列的所有数据
country_codes = list(db.ws(ws='Sheet1').col(col=3))

# 获取用户输入并转为大写,避免大小写匹配问题
target_cc = input("请输入3位国家代码:").upper()

# 统计匹配次数
matches = 0
for code in country_codes:
    # 把Excel里的代码也转大写,确保大小写不敏感匹配
    if code.upper() == target_cc:
        matches += 1

print(f"匹配到 {matches} 条记录")

核心改进说明:

  • 变量名区分:把用户输入的变量改成target_cc,遍历用code,彻底避免变量覆盖的问题
  • 大小写统一处理:不管是用户输入还是Excel里的代码都转成大写,就算Excel里有小写代码也能匹配到
  • 简化逻辑:只遍历一次列数据就完成统计,删掉了原来冗余的字典统计(如果不需要统计所有国家代码的次数,这部分完全没必要)
  • 补全了匹配判断的逻辑,明确和用户输入的目标代码对比

如果需要同时统计所有国家代码的出现次数,后续可以快速查询任意代码,也可以用下面的高效写法:

import pylightxl as xl

with open('city.xlsx', 'rb') as f:
    db = xl.readxl(f)

country_codes = list(db.ws(ws='Sheet1').col(col=3))

# 一次性统计所有国家代码的出现次数
code_counts = {}
for code in country_codes:
    upper_code = code.upper()
    # 用get方法简化计数逻辑,不存在的键默认返回0
    code_counts[upper_code] = code_counts.get(upper_code, 0) + 1

# 获取用户输入
target_cc = input("请输入3位国家代码:").upper()

# 从统计字典里拿结果,没有匹配的话返回0
matches = code_counts.get(target_cc, 0)
print(f"匹配到 {matches} 条记录")

这种写法只需要遍历一次列数据,之后查询任意国家代码的次数都能直接从字典里取,效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:01:19