У меня есть текстовый файл со следующей структурой (пробелы в начале специально)
* Some unimportant text line *
Data set # 1
Time Data1 Data2
[s] [kg/m2] [C]
~~~~~~~~~~~~~~~~~~~~~~
1.0 2.45 465.5E-5
2.0 3.76 876.6E-6
...
// empy lines between end of table to next line //
Data set # 2
...
...
Я бы хотел создать словарь с ключом в качестве номера точки ('1') и значением матрица с плавающей запятой, которая появляется после этого. В настоящее время я использую что-то вроде этого:
results = []
num_of points = []
dict_results = {}
regex_pattern = r'-?\ *[0-9]+\.?[0-9]*(?:[Ee]\ *-?\ *[0-9]+)?' # for all numbers
with ('file.txt') as f:
for line in f:
test_line = re.findall (regex_pattern, line)
if len(test_line) == 1: # check if it is a data set line
if not num_of points: # firts data set
current point = int (test_line)
num_of_points.append(current_point)
else:
# append the data to dict
results_array = np.array(results , dtype= float)
dict_results.update({num_of_points[-1] : results_array})
# reset the result list
results = []
# update the point list
current_point = int(test_line)
num_of_points.append(current_point)
elif len(test_line) == 3: # check if it is a data line
results.append(test_line)
Кажется, это работает, но мне интересно, есть ли более элегантный и эффективный способ сделать это.
Большое спасибо!