python - 文本文件从 txt 文件中读取输入变量
问题描述
我确实有这种格式的文本文件
instance_name = "small_instance_01_simple";
d = 2;
r = 3;
SCj = [80 57];
Dk = [96 22 14];
Cjk = [[81 51 31] [82 47 54]];
如何在我的 python 代码中获取这些变量的值?我尝试了更多方法,但都没有成功
解决方案
首先让我们导入re
并定义我们的类文件对象:
import re
s = StringIO("""
instance_name = "small_instance_01_simple";
d = 2;
r = 3;
SCj = [80 57];
Dk = [96 22 14];
Cjk = [[81 51 31] [82 47 54]];
""")
该parse_value
函数尝试解析expr
as 原语,如果它作为序列失败,最后作为字符串失败:
def parse_value(expr):
try:
return eval(expr)
except:
return eval(re.sub("\s+", ",", expr))
else:
return expr
该parse_line
函数解析每一行并返回变量名称和值(如果有):
def parse_line(line):
eq = line.find('=')
if eq == -1: raise Exception()
key = line[:eq].strip()
value = line[eq+1:-2].strip()
return key, parse_value(value)
现在让我们提取变量:
vars = {}
for line in s.readlines():
try:
key, val = parse_line(line)
vars[key] = val
except:
pass
让我们检查一下我们有什么:
for key, value in vars.items():
print(key, value, type(value))
输出:
instance_name small_instance_01_simple <class 'str'>
d 2 <class 'int'>
r 3 <class 'int'>
SCj [80, 57] <class 'list'>
Dk [96, 22, 14] <class 'list'>
Cjk [[81, 51, 31], [82, 47, 54]] <class 'list'>
推荐阅读
- javascript - 有没有办法用 Highcharts Boost 更新一个点?
- c# - 带有 Redis 的 OutputCache 可在 Localhost 上运行,但不能在 Azure WebApp 上运行
- c# - 在 UserControl 中注册附加属性
- php - Wordpress 自定义帖子中的反斜杠转义
- javascript - Django 在模板中使用 AJAX 渲染模板
- arm - STM32F4 SPI每个数据帧之间的空闲时间,为什么太长了?
- c# - 如何让 Visual Studio 使用抽象控件类来定义 FormMain.cs.design 中的控件?
- python - Python 文件到 MSI Windows 安装程序
- python - Python setup.py:缺少一些文件
- vb.net - 当 Vscroll bar 改变时更新 label.txt (live) (vb2010)