Эти данные очень сложно проанализировать. Я пробовал несколько настроек с кучей парсеров csv, но я не думаю, что есть чистый способ разобрать такие беспорядочные данные. Я пошел на грязный подход. Если он вам нужен только для этого файла, следующее должно работать, если вам нужно делать это регулярно, я не обещаю, что это всегда будет работать чисто.
#! /usr/bin/env python
import csv
data = []
with open('Teresa CO2 Injectors_Spaces.TXT') as file_handler:
header = file_handler.readline().strip().split()
header2 = ['' for i in range(13)] + file_handler.readline().strip().split() + ['']
data.append(header)
data.append(header2)
for row in file_handler.readlines():
tempRow = []
UWIAPI = row[0:20]
WELLNAME = row[20:40]
WELLNO = row[40:60]
LABEL = row[60:80]
OPER = row[80:100]
PRODFM = row[100:120]
SURFLAT = row[120:132]
SURFLON = row[132:144]
BOTLAT = row[144:156]
BOTLON = row[156:168]
PERFTOP = row[168:176]
PERFBASE = row[176:184]
PERFSOURCE = row[184:200]
ELEV_KB = row[200:220]
TD = row[218:228]
COMP_DATE = row[228:240]
SPUD_DATE = row[240:252]
INJLIQ = row[252:264]
INJGAS = row[264:276]
INJWTR = row[276::]
SYM = ''
tempRow = [
UWIAPI.strip(),
WELLNAME.strip(),
WELLNO.strip(),
LABEL.strip(),
OPER.strip(),
PRODFM.strip(),
SURFLAT.strip(),
SURFLON.strip(),
BOTLAT.strip(),
BOTLON.strip(),
PERFTOP.strip(),
PERFBASE.strip(),
PERFSOURCE.strip(),
ELEV_KB.strip(),
TD.strip(),
COMP_DATE.strip(),
SPUD_DATE.strip(),
INJLIQ.strip(),
INJGAS.strip(),
INJWTR.strip(),
SYM,
]
data.append(tempRow)
with open('example.csv', 'w+') as fh:
writer = csv.writer(fh, delimiter=',')
for row in data:
writer.writerow(row)