У меня есть файл со старым форматом из 70-х, используемый в Companies House (реестр компаний Великобритании).
Я унаследовал парсер, написанный 6 лет назад, который переходит строка за строкой и в соответствии с набором условий извлекает информацию из строки и вставляет ее в словарь.
Есть странный символ, ломающий линию.
Я скопировал эту строку в новый файл awk '{if(NR==33411) print $0}' PROD216_1950_ew_1.dat > broken
и opend broken
в vim.
Оказывается, что странный символ читается vim a <85>
.
В результате все, что после MAYFIELD
читается как новая строка.
Ниже рассматриваемой строки:
000376702103032986930001 1993010119941024 193709 0105<BARRY ALEXANDER<GROSVENOR<<<<MAYFIELD 3<41 PLANTATION ROAD<THE PEAK<<HONG KONG<BANK EXECUTIVE<BRITISH<<
в vim становится
000376702103032986930001 1993010119941024 193709 0105<BARRY ALEXANDER<GROSVENOR<<<<MAYFIELD <85>3<41 PLANTATION ROAD<THE PEAK<<HONG KONG<BANK EXECUTIVE<BRITISH<<
Я использую codecs
для чтения этого файла с помощью диспетчера контекста, который яМысль была способ сделать это -
Есть ли что-то, что я пропускаю? Что это такое <85>
?
with codecs.open(filepath, 'r', 'utf-8') as fh:
for line in fh:
linetype = determine_line_type(line)
if linetype == 'header':
continue
elif linetype == 'company':
do stuff...
elif linetype == 'officer':
do stuff...