блин. мой косяк - файл изначально txt - я просто взял часть и пересохранил, исходник пару тысяч строк имеет и когда сохранял не проверил
Перезалил файл
repr(open('somefile.txt').read())
import re pat = r""" MemTotal: +(\d+) kB MemFree: +(\d+) kB Buffers: +(\d+) kB""" def myRead(): with open ("somefile.txt", "r") as myfile: data=myfile.read() data = re.sub('\r','',data) data = re.sub('\n\n','\n',data) return data s = myRead() lst = [] for i in re.findall(pat, s): s = [int(x) for x in i] lst.append(dict(zip(('total', 'free', 'buffers'),s))); print(lst)
metotronВыполни там
Файл объемом в 500кВ парсится секунд 45
re.findall(pat, s) input('end')
pat = r"MemTotal:\s+(\d+)\s+kB\s+MemFree:\s+(\d+)\s+kB\s+Buffers:\s+(\d+)\s+kB"
pat = r"MemTotal:\s+(\d+)\s+kB\s*[\r\n]+MemFree:\s+(\d+)\s+kB\s*[\r\n]+Buffers:\s+(\d+)\s+kB"
ShamanНадо файл привести к нормальному виду, он явно там неправильно создан чем-то.
И не нужно никаких замен переводов строк.