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

如何让Python代码忽略大小写处理用户输入(含列名与查询指令)

解决代码中列名与查询指令的大小写敏感问题

我懂你的痛点——现在查询指令已经通过lower()处理成小写了,但列名的输入还没做大小写兼容,用户不小心输入"Age"而不是"age"就会直接返回"Data invalid",确实很影响体验。我们只需要做两处关键修改,就能让整个输入逻辑完全忽略大小写:

修改后的完整代码

import pandas as pd  # 补充导入pandas,原代码里的read_csv需要用pd.read_csv

def answer_question(df, column_name, question):
    if column_name not in df.columns:
        return "Data invalid"
    else:
        if question == "average":
            return df[column_name].mean()
        elif question == "minimum":
            return df[column_name].min()
        elif question == "maximum":
            return df[column_name].max()
        elif question == "standard deviation":
            return df[column_name].std()
        else:
            return "Sorry, I don't understand your question."

file_path = "filepath.csv"

df = pd.read_csv(file_path)
# 1. 将DataFrame的列名统一转为小写,避免原数据列名大小写混乱的问题
df.columns = df.columns.str.lower()
# 2. 将用户输入的列名也转为小写,实现大小写无关匹配
column_name = input("What is the column name?: ").lower()

print("What function would you like to perform?: ")
question = input().lower()

answer = answer_question(df, column_name, question)
print(answer)

关键改动说明

  • 统一DataFrame列名为小写:df.columns = df.columns.str.lower()
    这一步是为了避免原CSV文件里的列名本身就有大小写混合(比如"Age"、"AGE"、"age"并存)的情况,确保所有列名都是小写格式,方便后续匹配。
  • 用户输入列名转小写:column_name = input(...).lower()
    和查询指令的处理逻辑保持一致,把用户输入的列名转为小写,这样不管用户输入"Age"还是"AGE",都会变成"age"去和DataFrame的小写列名匹配。

额外优化建议(可选)

如果想让查询指令的匹配更灵活(比如用户输入"avg"也能识别为"average"),可以把判断逻辑改成用字典映射,比如:

def answer_question(df, column_name, question):
    if column_name not in df.columns:
        return "Data invalid"
    # 用字典存储指令映射,支持别名和大小写无关匹配
    func_map = {
        "average": df[column_name].mean,
        "avg": df[column_name].mean,
        "minimum": df[column_name].min,
        "min": df[column_name].min,
        "maximum": df[column_name].max,
        "max": df[column_name].max,
        "standard deviation": df[column_name].std,
        "std": df[column_name].std
    }
    return func_map.get(question, lambda: "Sorry, I don't understand your question.")()

这样不仅保持了大小写无关,还能支持更多用户习惯的指令别名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 11:05:20