Как и год назад, в Январе таблицы не включают столбцы с предыдущими месяцами. Но, кроме того, в таблицах 2 и 3 убрали столбцы. Так что пришлось выполнить очередную перенастройку.
!chcp 65001
!dir C:\Users\kiss\Documents\Xpdf\aebru_2015_all_txt
Пропишем путь к рабочему модулю в переменную окружения¶
import sys
sys.path.append('C:\\Users\\kiss\\SkyDrive\\Docs\\pdftotext\\AEB\\pdgtotext')
sys.path
Вот он, последний, теперь импортируем все сюда
from aebto3tables import *
Проверим, вот константа из модуля:
CSVFOLDER
class January15 (Aebto3tables):
"""Try to tune august"""
#txtfile_path = 'C:\\Users\\kiss\\Documents\\Xpdf\\aebru_2014_all_txt\\eng_car-sales-in-august-2014.txt'
#csvfilename = 'eng_car-sales-in-august-2014.csv'
#
def tab1fromtxt(self, txtfile_path, csvfilename, csvfolder=CSVFOLDER):
"""
Первая таблица - самые продаваемые марки (50 строк)
Вот первые две:
Lada 151527 159490 -5% 44100 50102 -12%
Renault* 67208 57217 17% 19178 17914 7%
"""
t1 = []
with open(txtfile_path) as f1:
for line in f1:
lns1 = filter(None, line.split(' '))
if len(lns1) in range(4, 5):
if (lns1[-1].find('-') != -1) | (lns1[-1].find('%') != -1):
#if (lns1[-4].find('-') != -1) | (lns1[-4].find('%') != -1):
if (line.partition(' ')[2] != ['']) and (line.partition(' ')[0].strip() != 'Total'):
tline = map(str.strip, lns1)
t1.append(tline)
csvfile_path = csvfolder + '\\1jan\\' + csvfilename
self.tocsv(t1, csvfile_path)
#print t1
def tab2fromtxt(self, txtfile_path, csvfilename, csvfolder=CSVFOLDER):
"""
Вторая - суммарные продажи по фирмам (все фирмы)
NISSAN 30,9 31,1 266169 274285 -3% 29,3 30,2 71977 80630 -12%
AVTOVAZ 17,6 18,1 151527 159490 -5% 18,0 18,8 44100 50102 -12%
"""
t2 = []
with open(txtfile_path) as f2:
for line in f2:
lns2 = filter(None, line.split(' '))
if len(lns2) in range(7, 8):
if (lns2[-1].find('-') != -1) | (lns2[-1].find('%') != -1):
#if (lns2[-7].find('-') != -1) | (lns2[-7].find('%') != -1):
if (line.partition(' ')[2] != ['']): #
tline = map(str.strip, lns2)
t2.append(tline)
csvfile_path = csvfolder + '\\2jan\\' + csvfilename
self.tocsv(t2, csvfile_path)
#print t2
def tab3fromtxt(self, txtfile_path, csvfilename, csvfolder=CSVFOLDER):
"""
Третья должна состоять из 25 строк вида:
1 Granta Lada 52765 26674 98% 15596 9798 59%
2 Solaris Hyundai 35941 38051 -6% 10553 10979 -4%
"""
t3 = []
with open(txtfile_path) as f3:
for line in f3:
lns3 = filter(None, line.split(' '))
if len(lns3) in range(6, 7):
if lns3[0].isdigit():
if (line.find(' ') != -1):
if (line.partition(' ')[2] != ['']): #and (line.partition(' ')[0].isdigit()):
tline = map(str.strip, lns3)
t3.append(tline)
csvfile_path = csvfolder + '\\3jan\\' + csvfilename
self.tocsv(t3, csvfile_path)
#print t3
txtfile_path = 'C:\\Users\\kiss\\Documents\\Xpdf\\aebru_2015_all_txt\\eng_car-sales-in-january-2015.txt'
csvfilename = 'eng_car-sales-in-january-2015.csv'
J15 = January15('2015-01')
Если не переопределить эту сонстанту, то все три файла запишутся в 2014 год (команды для записи в конце страницы), чтобы не забыть потом, сделаем это перед отладкой.¶
CSVFOLDER = 'C:\\Users\\kiss\\Documents\\Xpdf\\aerbu_2015_all_csv'
Сначала пробуем исправленный по pdf файлу вариант и ищем причины ошибок¶
J15.tab1fromtxt(txtfile_path, csvfilename) # ничего не менял
Вторая таблица (уменьшил количество столбцов):¶
J15.tab2fromtxt(txtfile_path, csvfilename)
Для третьей таблицы нужно было изменить параметры фильтров: количество столбцов и #and (line.partition(' ')[0].isdigit()):
J15.tab3fromtxt(txtfile_path, csvfilename)
Запустим парсер, для этого¶
Раскоментируем строки:
# Было
#csvfile_path = csvfolder + '\\3aug2\\' + csvfilename
#self.tocsv(t3, csvfile_path)
print t3
# Стало
csvfile_path = csvfolder + '\\3aug2\\' + csvfilename
self.tocsv(t3, csvfile_path)
#print t3
И запустим выполнение для каждого файла¶
Примечание: папки для записи результатов были созданы вручную заранее, нам здесь нужно было лишь отредактировать в сетодах эементы пути '\1jan\', '\2jan\', '\3jan\'
# Запускаем на выполнение
J15.tab1fromtxt(txtfile_path, csvfilename)
J15.tab2fromtxt(txtfile_path, csvfilename)
J15.tab3fromtxt(txtfile_path, csvfilename)
В соответствующих папках должны появиться файлы .csv
Посты чуть ниже также могут вас заинтересовать
Комментариев нет:
Отправить комментарий