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

能否将.txt文件名后缀作为Python字典的动态键补全计算变量?

解决思路与代码实现

一、建立后缀与缺失值的映射字典

先把13个后缀和对应的A值一一对应,写成字典(键用字符串格式,和文件名后缀完全匹配):

# 示例:根据你的实际缺失值替换
suffix_A_map = {
    "_01": 1.2,
    "_12": 3.5,
    "_03": 0.8,
    # 补充剩余10个后缀及对应A值
}

二、提取文件名后缀并关联字典值

读取文件时,从文件名里拆分出后缀,再用字典拿到对应的A值,之后完成计算:

import os
import pandas as pd

# 替换成你的txt文件所在文件夹路径
folder_path = "./measurements"

for file_name in os.listdir(folder_path):
    if not file_name.endswith(".txt"):
        continue
    
    # 提取后缀:比如从"test_01.txt"中得到"_01"
    # 这里假设后缀是文件名最后一个下划线到.txt前的部分,根据你的命名规则调整
    suffix = "_" + file_name.split("_")[-1].replace(".txt", "")
    
    # 获取对应的A值,若后缀不在字典里则跳过并提示
    A_value = suffix_A_map.get(suffix)
    if A_value is None:
        print(f"跳过文件{file_name}:未找到对应后缀的A值")
        continue
    
    # 读取txt文件为DataFrame,分隔符根据你的数据调整(比如空格、制表符)
    df = pd.read_csv(os.path.join(folder_path, file_name), sep="\t")
    
    # 计算J=I*A,假设I列的列名为"I",根据实际列名修改
    df["J"] = df["I"] * A_value
    
    # 可选:保存处理后的文件
    df.to_csv(os.path.join(folder_path, f"processed_{file_name}"), sep="\t", index=False)

三、解决TypeError问题

你碰到的TypeError: unsupported operand type(s) for *: 'int' and 'dict',是因为直接用了字典对象去和DataFrame的数值列相乘,而没有取出字典里对应键的具体数值。上面的代码里用suffix_A_map.get(suffix)拿到的是具体的数值(比如1.2、3.5这类),直接和I列的数值相乘就不会报错,完全不需要用元组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:22:22