我很难解析看起来如下的ASCII。 我需要在注释行中创建一个名为第一个字母项的数组(以' - '开头),并在该注释行和内联'/'之间追加所有数字。 文件中可能有几个这样的记录。
-- LIQ units - sm³/day ( 8 values )
500.0 1000.0 1500.0 2000.0 3000.0
4000.0 5000.0 6000.0 /
-- GRAT units - sm³/day ( 7 values )
0.0 200000.0 400000.0 600000.0 800000.0
999999.9 1200000.0 /
例如,我希望获得liq = [500.0, 1000.0, 1500.0, 2000.0, 3000.0, 4000.0, 5000.0, 6000.0]
答案 0 :(得分:1)
通常情况下,您需要动态创建变量(名称)。而是使用字典来存储所有数组。
您可以逐行解析这些行,并检查该行是否以“ - ”开头 一旦找到这样的一行,你需要解析其余的行,直到你在行的末尾得到一个'\'。
并再次重复该过程直到文件结束
类似于此的东西将起作用
import re
pat = re.compile(r'^--\s*(?P<name>\w+).*')
def get_data(file):
'''gets the numbers till you find "/"
'''
arr = []
for line in file:
numbers = line.split()
if numbers[-1] == '/':
arr.extend(numbers[:-1])
break
else:
arr.extend(numbers)
return arr
for line in file:
if line.startswith('--'):
name = pat.match(line).groups()[0]
arrays[name] = get_data(file)
这将返回格式字典:
'GRAT': ['0.0',
'200000.0',
'400000.0',
'600000.0',
'800000.0',
'999999.9',
'1200000.0'],
'LIQ': ['500.0',
'1000.0',
'1500.0',
'2000.0',
'3000.0',
'4000.0',
'5000.0',
'6000.0']}
您输入的内容
请在使用代码之前处理边缘情况和异常处理
祝你好运!