У меня есть имя файла log.txt
Структура у него примерно такая:
2022-04-28 22:33:02,290\\INFO\\Database connection established
2022-04-28 22:33:07,470\\INFO\\Files concatenation
2022-04-28 22:33:09,708\\INFO\\Table xxx_xxx created
Я хочу отправить это в базу данных, к которой я ранее подключался.
with open("test.log",'r') as data_file:
values = [line.split("\\") for line in data_file]
engine.execute('INSERT INTO control (log_date, debugType, messa) VALUES (%s, %s, %s)', values)
Когда я печатаю значения, которые будут переданы в базу данных, это выглядит так:
[['2022-04-28 22:33:02,290', '', 'INFO', '', 'Database connection established\n'], ['2022-04-28 22:33:07,470', '', 'DEBUG', '', 'Files concatenation\n'], ['2022-04-28 22:33:09,708', '', 'DEBUG', '', 'Table xxx_xxx created\n'],...]
Прежде всего, я хочу исключить значение, которое следует за запятой после метки времени (например, в первой строке: '2022-04-28 22:33:02,290'
, я хочу удалить ,290
.
Я также хочу избавиться от пустых строк, где был \\.
Можете вы помочь мне?
Решение проблемы
Кажется, что в вашем файле есть дополнительные символы, поэтому вы получаете эти пустые строки. Наивное и жадное решение:
final_list = []
with open("test.log",'r') as data_file:
for line in data_file:
line_list = line.rstrip('\n').split("\\")
line_list[0] = line_list[0][:-4]
final_list = list(filter(lambda l: l!= '', line_list))
final_list.append(final_line)
Если у вас есть список (вы завершили чтение и анализ списка), вы можете применить те же самые вещи:
''
, просто выполните фильтрацию в каждом списке.final_list = [ list(filter(lambda l: l!= '', inside_l)) for inside_l in whole_list]
string[:-4]
итерацию по всему списку, получите первый элемент и примените нарезкуfor inside_list in final_list:
inside_list[0] = inside_list[0][:-4]
Комментариев нет:
Отправить комментарий