В настоящее время я работаю над функцией синтаксического анализа с использованием регулярных выражений, но написанная мной функция не может обрабатывать пропущенные данные. Код, который я использую, основан на коде https://www.vipinajayakumar.com/parsing-text-with-python/ и анализирует поля структурированного текста с каждой строкой в виде:
someField = someValue
Эти файлы, которые я анализирую, по построению могут иметь некоторые поля, которые не имеют значения в someValue . Поскольку впоследствии я создаю строку, как в ссылке, как я могу обработать пропущенные значения, если файл, который я анализирую, не содержит никакого значения для определенного поля?
РЕДАКТИРОВАТЬ:
IПриведу пример. Скажем, TXT-файлы, которые мне нужно проанализировать, содержат эти два поля:
Высота = 176
Вес = 75,9
и с использованием только этой части кода:
import os
import re
import pandas as pd
def parse_line(line, curr_dict):
"""
The function parse_line(line) does a parse on the input line. This function is taken from the tutorial on parsing files available at https://www.vipinajayakumar.com/parsing-text-with-python/
"""
for key, rx in curr_dict.items():
match = rx.search(line)
if match:
return key, match
# if there are no matches
return None, None
test_dict={
'Weight' : re.compile(r'Weight=(?P<Weight>\d+[.]\d+)\n'),
'Height' : re.compile(r'Height=(?P<Height>\d+)\n'),
}
with open(txt_file,'r') as f:
new_line = f.readline()
while new_line:
key, match = parse_line(new_line, test_dict)
if key :
if key == 'Weight':
Weight = match.group('Weight')
Weight = float(Weight)
if key == 'Height':
Height = match.group('Height')
new_line = f.readline()
row = {'Height' : Height,
'Weight' : Weight,
}
df = pd.DataFrame(row, index=[1])
Если в файле заполнены все поля, как показано выше, проблем нет, но если, например:
Высота =
Вес = 75,9
У меня ошибка, потому что у меня отсутствует значение в Height =