Вы были близки.Этот пример будет делать то, что вам нужно.
import re
dd = '2018-12-14 23:54:53,105 WARN system.equipment - Timed AC is: 110.375\n'
delim_array = [chr(32),chr(32), chr(32)+chr(32), chr(32)+chr(45)+chr(32)]
part = []
for j in delim_array:
ap, dd = re.split(j, dd, maxsplit=1)
part.append(ap) #datafile is my list to split
part.append(dd.strip())
print(part)
Это печатает: ['2018-12-14', '23:54:53,105', 'WARN', 'system.equipment', 'Timed AC is: 110.375']
Ключевая часть здесь, чтобы использовать re.split()
с maxsplit, равным 1 ( здесь документы), поэтому каждую итерацию вы разбиваете на две части.Первая часть - это то, что вы хотите добавить в список part
, вторая часть, которую вы оставляете для дальнейшего разделения.Итак, пересылаем вторую часть в ту же переменную, которая содержит строку (dd
в моем примере).Не забудьте после цикла добавить последний полученный dd
, иначе он будет потерян (я также уберу здесь новую строку).
Если у вас есть файл данных, вам нужен для этого вложенный цикл.Конечно, убедитесь, что все строки имеют тот же формат, что и вы, иначе вы можете получить неожиданные результаты.
import re
delim_array = [chr(32),chr(32), chr(32)+chr(32), chr(32)+chr(45)+chr(32)]
with open("your_file_name.txt") as datafile:
for dd in datafile:
part = []
for j in delim_array:
ap, dd = re.split(j, dd, maxsplit=1)
part.append(ap) #datafile is my list to split
part.append(dd.strip())
print(part)