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

Python如何通过指定关键词读取txt文件中对应变量的数据集

实现方案

结论

可以通过关键词匹配的方式实现按A、B、C、D变量名读取对应数据,不需要依赖行号索引。

实现步骤

首先导入所需依赖:

import re
import ast
import numpy as np

然后读取文件内容并按变量名解析:

# 读取文件全部内容
with open('dict.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 正则匹配所有变量名和对应的值,自动适配跨行内容
pattern = re.compile(r'([A-Z])\s*=\s*([\s\S]*?)(?=\n[A-Z]\s*=|\Z)')
matches = pattern.findall(content)

data = {}
for var_name, var_value in matches:
    # 处理值中的空格、换行,转换为合法Python字面量格式
    formatted_val = re.sub(r'\s+', ' ', var_value.strip())
    formatted_val = formatted_val.replace('[ ', '[').replace(' ]', ']').replace(' ', ',')
    # 安全解析为Python对象
    parsed_val = ast.literal_eval(formatted_val)
    # 单独处理B变量为ndarray类型
    if var_name == 'B':
        parsed_val = np.array(parsed_val)
    data[var_name] = parsed_val

结果验证

直接通过变量名索引即可读取对应类型的数据:

print(type(data['A']))  # 输出 <class 'dict'>
print(type(data['B']))  # 输出 <class 'numpy.ndarray'>
print(type(data['C']))  # 输出 <class 'float'>
print(type(data['D']))  # 输出 <class 'list'>

注意事项

  • 上述正则默认变量名为单个大写字母,如果你后续有其他变量命名规则,可自行调整正则表达式
  • 这里使用ast.literal_eval代替eval做解析,只会处理Python字面量,不会执行任意代码,安全性更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:36:02