Форум сайта python.su
Есть несколько тхт файлов. Каждый файл представляет собой набор строк. Каждая строка представляет собой набор символов. Без разделителей, без чего либо еще. О структуре строки можно судить только изходя из документации с ее скелетом.
Напимер:
строка:
7Петя Иванов СергеевичМоскваРоссия29779106619
Поле Позиция
ID [0-3]
Имя [4-7]
Фамилия [8-15]
Отчество [16-25]
Город [26-32]
Страна [33-40]
Возраст [41-42]
Телефон [43-49]
open DATA, $fileaddress;
while (read(DATA, $buf, 4+4+8+10+7+8+2+7)) {
($client_id, $firstname, $lastname, $midname, $city, $country, $age, $phone) = unpack($format_str, $buf);
}
Офлайн
import re
class DullReader:
scheme_str = re.compile(r'(?P<name>\w+)\s+\[(?P<start>\d+)-(?P<end>\d+)\]')
def __init__(self, scheme):
self.scheme =[]
for s in scheme:
match = self.scheme_str.match(s)
if match:
self.scheme.append((int(match.group('start')),int(match.group('end')), match.group('name')))
def read(self, f):
for s in f:
yield dict((x[2],s[x[0]:x[1]]) for x in self.scheme)
reader = DullReader('template.txt')
for x in reader.read('1.txt'):
print x
Офлайн
Могу предложить еще вариант
from struct import unpack
for str in open("data.dat","r"):
a,b,c,nl=unpack("3s3s3sc",str)
Офлайн