Я новичок в разборе в Python. Я хочу разобрать следующий тип текста
значение один = 5
значение два = 10
% текста здесь
значение три = 15
% текста
значение один = 12
значение два = 13
% текста здесь
значение три = 11
.. и это продолжается
Я хочу извлечь .value один. .значение два. и .значение три. и упорядочить их в табличном формате для обработки. Любые идеи о том, как это сделать
Я пробовал следующее до сих пор. Это дает мне ошибку: локальное значение, указанное два перед присваиванием
import re
import pandas as pd
val_dict = { 'value_one':re.compile(r'value one = (?P<value_one>.*)\n'),
'value_two':re.compile(r'value two = (?P<value_two>.*)\n'),
'value_three':re.compile(r'value three = (?P<value_three>.*)\n')}
def _parse_line(line):
for key, val in val_dict.items():
match = val.search(line)
if match:
return key, match
# if there are no matches
return None, None
def parse_file(filepath):
data = []
with open(filepath, 'r') as file_object:
line = file_object.readline()
while line:
key, match = _parse_line(line)
if key == 'value_one':
value_one = match.group('value_one')
value_one = int(value_one)
if key == 'value_two':
value_two = match.group('value_two')
value_two = int(value_two)
if key == 'value_three':
value_three = match.group('value_three')
value_three = int(value_three)
row = {
'value one': value_one,
'value two': value_two,
'value three': value_three
}
# append the dictionary to the data list
data.append(row)
line = file_object.readline()
data = pd.DataFrame(data)
data.set_index(['value one', 'value two', 'value three'], inplace=True)
data = data.groupby(level=data.index.names).first()
data = data.apply(pd.to_numeric, errors='ignore')
return data
if __name__ == '__main__':
filepath = 'test3.txt'
data = parse_file(filepath)