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
相关产品推荐
相关产品推荐

