Поиск по блогу

суббота, 21 февраля 2015 г.

Переопределние класса AEBto3tables для таблиц января (они отличаются от всех остальных). Потом записываем только три файла в старые папки *aug2.

В Январе таблицы не включают столбцы с предыдущими месяцами. Пробуем просто поменять параметры в настройках метощдов класса

In [1]:
!chcp 65001
!dir C:\Users\kiss\Documents\Xpdf\aebru_2014_all_txt
Active code page: 65001
 Volume in drive C has no label.
 Volume Serial Number is 6017-2A0B

 Directory of C:\Users\kiss\Documents\Xpdf\aebru_2014_all_txt

16.02.2015  18:58    <DIR>          .
16.02.2015  18:58    <DIR>          ..
19.02.2015  16:07            39В 554 eng_car-sales-in-april-2014.txt
19.02.2015  16:07            44В 594 eng_car-sales-in-august-2014.txt
19.02.2015  16:07            46В 607 eng_car-sales-in-december-2014.txt
19.02.2015  16:07            46В 456 eng_car-sales-in-july-2014.txt
16.02.2015  18:57            44В 371 eng_car-sales-in-june-2014.txt
16.02.2015  18:58            43В 519 eng_car-sales-in-may-2014.txt
16.02.2015  18:58            46В 828 eng_car-sales-in-november-2014.txt
16.02.2015  18:58            48В 159 eng_car-sales-in-october-2014.txt
16.02.2015  18:58            45В 552 eng_car-sales-in-september-2014.txt
16.02.2015  18:58            39В 596 sales-in-december_2013_eng_final.txt
16.02.2015  18:58            39В 646 sales-in-february_2014_eng_final.txt
16.02.2015  18:58            36В 666 sales-in-january_2014_eng_final_1.txt
16.02.2015  18:58            40В 369 sales-in-march_2014_eng_final.txt
              13 File(s)        561В 917 bytes
               2 Dir(s)  388В 963В 794В 944 bytes free

Пропишем путь к рабочему модулю в переменную окружения

In [1]:
import sys
sys.path.append('C:\\Users\\kiss\\SkyDrive\\Docs\\pdftotext\\AEB\\pdgtotext')
In [2]:
sys.path
Out[2]:
['',
 'C:\\Users\\kiss\\Documents\\Python-Django',
 'C:\\Users\\kiss\\Anaconda\\Lib\\site-packages\\django\\bin',
 'C:\\Users\\kiss\\Anaconda\\python27.zip',
 'C:\\Users\\kiss\\Anaconda\\DLLs',
 'C:\\Users\\kiss\\Anaconda\\lib',
 'C:\\Users\\kiss\\Anaconda\\lib\\plat-win',
 'C:\\Users\\kiss\\Anaconda\\lib\\lib-tk',
 'C:\\Users\\kiss\\Anaconda',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\PIL',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\Sphinx-1.2.3-py2.7.egg',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\win32',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\win32\\lib',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\Pythonwin',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\queuelib-1.2.2-py2.7.egg',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\runipy-0.1.1-py2.7.egg',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\setuptools-11.3.1-py2.7.egg',
 'C:\\Users\\kiss\\Anaconda\\lib\\site-packages\\IPython\\extensions',
 'C:\\Users\\kiss\\SkyDrive\\Docs\\pdftotext\\AEB\\pdgtotext']

Вот он, последний, теперь импортируем все сюда

In [3]:
from aebto3tables import *

Проверим, вот константа из модуля:

In [4]:
CSVFOLDER
Out[4]:
'C:\\Users\\kiss\\Documents\\Xpdf\\aerbu_2014_all_csv'
In [24]:
class January (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 + '\\1aug2\\' + 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(6, 7):
                    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 + '\\2aug2\\' + 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(7, 8):
                    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 + '\\3aug2\\' + csvfilename
        self.tocsv(t3, csvfile_path)
        #print t3
In [6]:
txtfile_path = 'C:\\Users\\kiss\\Documents\\Xpdf\\aebru_2014_all_txt\\sales-in-january_2014_eng_final_1.txt'
csvfilename = 'sales-in-january_2014_eng_final_1.csv'    
In [25]:
J =  January('2014-01')

Сначала пробуем исправленный по pdf файлу вариант и ищем причины ошибок

In [9]:
J.tab1fromtxt(txtfile_path, csvfilename)   # 
[['Association of European Businesses', 'Phone.:', '+7 (495) 234 27 64', 'E-mail: info@aebrus.ru'], ['Lada', '23647', '30037', '-21%'], ['Renault*', '12894', '14741', '-13%'], ['KIA', '11199', '11059', '1%'], ['Nissan*', '11051', '8925', '24%'], ['Hyundai*', '11044', '11306', '-2%'], ['Chevrolet', '9420', '9542', '-1%'], ['VW', '8599', '9968', '-14%'], ['Toyota*', '8319', '6860', '21%'], ['Mitsubishi', '5007', '4020', '25%'], ['\xc5\xa0koda', '4744', '4623', '3%'], ['Opel', '4281', '5211', '-18%'], ['Ford*', '4250', '6364', '-33%'], ['Daewoo', '3718', '5693', '-35%'], ['GAZ LCV*', '3260', '4108', '-21%'], ['Mazda', '2848', '2071', '38%'], ['Mercedes-Benz', '2710', '1902', '42%'], ['BMW', '2540', '2171', '17%'], ['UAZ*', '2201', '2906', '-24%'], ['Honda', '1929', '1209', '60%'], ['Peugeot*', '1843', '2338', '-21%'], ['Citro\xc3\xabn*', '1720', '1581', '9%'], ['Audi', '1623', '1725', '-6%'], ['Suzuki', '1482', '1498', '-1%'], ['SsangYong', '1330', '1853', '-28%'], ['Geely', '1158', '817', '42%'], ['Chery', '1137', '1031', '10%'], ['Lifan', '1118', '843', '33%'], ['VW NFZ*', '949', '700', '36%'], ['Subaru', '938', '864', '9%'], ['Great Wall', '932', '1280', '-27%'], ['Land Rover', '922', '815', '13%'], ['Lexus', '707', '778', '-9%'], ['Infiniti', '471', '625', '-25%'], ['Jeep', '420', '146', '188%'], ['FIAT*', '407', '291', '40%'], ['Volvo', '402', '337', '19%'], ['FAW*', '302', '68', '344%'], ['Porsche', '126', '176', '-28%'], ['BAW*', '113', '128', '-12%'], ['ZAZ', '101', '203', '-50%'], ['Jaguar', '94', '70', '34%'], ['MINI', '82', '140', '-41%'], ['Cadillac', '80', '88', '-9%'], ['SEAT', '72', '201', '-64%'], ['Bogdan', '56', '261', '-79%'], ['Isuzu*', '28', '4', '600%'], ['Haima', '20', '6', '233%'], ['smart', '17', '3', '467%'], ['Luxgen', '12', '-', '-'], ['Izh', '10', '89', '-89%'], ['Chrysler', '7', '12', '-42%'], ['TagAZ*', '6', '33', '-82%'], ['Foton*', '2', '4', '-50%'], ['Dodge', '2', '9', '-78%'], ['Vortex', '0', '81', '-'], ['BYD', '0', '69', '-']]

Вторая таблица показала только эту строчку:

In [20]:
J.tab2fromtxt(txtfile_path, csvfilename) 
[['AVTOVAZ-RENAULT-NISSAN', '31,5', '33,5', '48063', '54328', '-12%'], ['AVTOVAZ', '15,5', '18,5', '23647', '30037', '-21%'], ['RENAULT', '8,4', '9,1', '12894', '14741', '-13%'], ['NISSAN', '7,2', '5,5', '11051', '8925', '24%'], ['INFINITI', '0,3', '0,4', '471', '625', '-25%'], ['VW Group', '10,5', '10,6', '15987', '17217', '-7%'], ['VOLKSWAGEN cars', '5,6', '6,2', '8599', '9968', '-14%'], ['VOLKSWAGEN vans', '0,6', '0,4', '949', '700', '36%'], ['AUDI', '1,1', '1,1', '1623', '1725', '-6%'], ['SEAT', '0,0', '0,1', '72', '201', '-64%'], ['\xc5\xa0KODA', '3,1', '2,9', '4744', '4623', '3%'], ['GM Group', '9,0', '9,2', '13781', '14841', '-7%'], ['OPEL', '2,8', '3,2', '4281', '5211', '-18%'], ['CHEVROLET', '6,2', '5,9', '9420', '9542', '-1%'], ['CADILLAC', '0,1', '0,1', '80', '88', '-9%'], ['KIA', '7,3', '6,8', '11199', '11059', '1%'], ['HYUNDAI', '7,2', '7,0', '11044', '11306', '-2%'], ['TOYOTA Group', '5,9', '4,7', '9026', '7638', '18%'], ['TOYOTA', '5,4', '4,2', '8319', '6860', '21%'], ['LEXUS', '0,5', '0,5', '707', '778', '-9%'], ['MITSUBISHI', '3,3', '2,5', '5007', '4020', '25%'], ['FORD', '2,8', '3,9', '4250', '6364', '-33%'], ['DAEWOO', '2,4', '3,5', '3718', '5693', '-35%'], ['PSA PEUGEOT CITRO\xc3\x8bN', '2,3', '2,4', '3563', '3919', '-9%'], ['PEUGEOT', '1,2', '1,4', '1843', '2338', '-21%'], ['CITRO\xc3\x8bN', '1,1', '1,0', '1720', '1581', '9%'], ['GAZ LCV', '2,1', '2,5', '3260', '4108', '-21%'], ['MERCEDES-BENZ', '2,0', '1,3', '3039', '2099', '45%'], ['MERCEDES-BENZ cars', '1,8', '1,2', '2710', '1902', '42%'], ['MERCEDES-BENZ vans', '0,2', '0,1', '312', '194', '61%'], ['smart', '0,0', '0,0', '17', '3', '467%'], ['MAZDA', '1,9', '1,3', '2848', '2071', '38%'], ['BMW Group', '1,7', '1,4', '2622', '2311', '13%'], ['BMW', '1,7', '1,3', '2540', '2171', '17%'], ['MINI', '0,1', '0,1', '82', '140', '-41%'], ['UAZ', '1,4', '1,8', '2201', '2906', '-24%'], ['HONDA', '1,3', '0,7', '1929', '1209', '60%'], ['SUZUKI', '1,0', '0,9', '1482', '1498', '-1%'], ['SSANGYONG', '0,9', '1,1', '1330', '1853', '-28%'], ['GEELY', '0,8', '0,5', '1158', '817', '42%'], ['CHERY', '0,7', '0,6', '1137', '1031', '10%'], ['LIFAN', '0,7', '0,5', '1118', '843', '33%'], ['JAGUAR LAND ROVER', '0,7', '0,5', '1016', '885', '15%'], ['LAND ROVER', '0,6', '0,5', '922', '815', '13%'], ['JAGUAR', '0,1', '0,0', '94', '70', '34%'], ['SUBARU', '0,6', '0,5', '938', '864', '9%'], ['GREAT WALL', '0,6', '0,8', '932', '1280', '-27%'], ['CHRYSLER Group', '0,5', '0,3', '836', '458', '83%'], ['FIAT', '0,3', '0,2', '407', '291', '40%'], ['CHRYSLER', '0,0', '0,0', '7', '12', '-42%'], ['JEEP', '0,3', '0,1', '420', '146', '188%'], ['DODGE', '0,0', '0,0', '2', '9', '-78%'], ['VOLVO', '0,3', '0,2', '402', '337', '19%'], ['FAW', '0,2', '0,0', '302', '68', '344%'], ['PORSCHE', '0,1', '0,1', '126', '176', '-28%'], ['BAW', '0,1', '0,1', '113', '128', '-12%'], ['ZAZ', '0,1', '0,1', '101', '203', '-50%'], ['BOGDAN', '0,0', '0,2', '56', '261', '-79%'], ['ISUZU', '0,0', '0,0', '28', '4', '600%'], ['HAIMA', '0,0', '0,0', '20', '6', '233%'], ['LUXGEN', '0,0', '-', '12', '-', '-'], ['IZH', '0,0', '0,1', '10', '89', '-89%'], ['TAGAZ', '0,0', '0,0', '6', '33', '-82%'], ['FOTON', '0,0', '0,0', '2', '4', '-50%'], ['BYD', '-', '0,0', '0', '69', '-'], ['VORTEX', '-', '0,0', '0', '81', '-'], ['Total', '100,0', '100,0', '152 662', '162 077', '-6%'], ['SOLLERS Group', '2,3', '2,9', '3559', '4763', '-25%'], ['ISUZU', '0,0', '0,0', '28', '4', '600%'], ['SSANGYONG', '0,9', '1,1', '1330', '1853', '-28%'], ['UAZ', '1,4', '1,8', '2201', '2906', '-24%'], ['MODEL', 'BRAND', '2014', '2013', 'YoY units', 'YoY %']]

Для третьей таблицы тоже не понадобились никакие правки

In [17]:
J.tab3fromtxt(txtfile_path, csvfilename) 
[['1', 'Granta', 'Lada', '8255', '10589', '(2 334)', '-22%'], ['2', 'Solaris', 'Hyundai', '6947', '7353', '(406)', '-6%'], ['3', 'Duster', 'Renault', '5590', '5374', '216', '4%'], ['4', 'New Rio', 'KIA', '5324', '4744', '580', '12%'], ['5', 'Kalina', 'Lada', '4264', '6016', '(1 752)', '-29%'], ['6', 'Polo', 'VW', '3836', '4631', '(795)', '-17%'], ['7', 'Largus', 'Lada', '3792', '2876', '916', '32%'], ['8', 'Priora', 'Lada', '3324', '3674', '(350)', '-10%'], ['9', 'Logan', 'Renault', '3004', '3678', '(674)', '-18%'], ['10', 'Almera', 'Nissan', '2993', '0', '2993', '-'], ['11', 'Sandero', 'Renault', '2795', '3489', '(694)', '-20%'], ['12', 'Cruze', 'Chevrolet', '2729', '2467', '262', '11%'], ['13', 'New X-Trail', 'Nissan', '2687', '1981', '706', '36%'], ['14', 'Niva', 'Chevrolet', '2622', '3337', '(715)', '-21%'], ['15', 'Octavia A7', 'Skoda', '2439', '0', '2439', '-'], ['16', 'ix35', 'Hyundai', '2345', '2154', '191', '9%'], ['17', '4x4', 'Lada', '2314', '3442', '(1 128)', '-33%'], ['18', 'RAV 4', 'Toyota', '2280', '1098', '1182', '108%'], ['19', "New Cee'd", 'KIA', '2265', '1983', '282', '14%'], ['20', 'Qashqai', 'Nissan', '2152', '2385', '(233)', '-10%'], ['21', 'Astra', 'Opel', '2125', '2442', '(317)', '-13%'], ['22', 'Gentra', 'Daewoo', '2119', '0', '2119', '-'], ['23', 'Focus', 'Ford', '2027', '4384', '(2 357)', '-54%'], ['24', 'Corolla', 'Toyota', '1895', '1242', '653', '53%'], ['25', 'Sportage', 'KIA', '1885', '2452', '(567)', '-23%']]

Запустим парсер, для этого

Раскоментируем строки:

In []:
# Было
#csvfile_path = csvfolder + '\\3aug2\\' + csvfilename
#self.tocsv(t3, csvfile_path)
print t3
In []:
# Стало
csvfile_path = csvfolder + '\\3aug2\\' + csvfilename
self.tocsv(t3, csvfile_path)
#print t3

И запустим выполнение для каждого файла

Примечание: папки для записи результатов были созданы вручную заранее, нам здесь нужно было лишь отредактировать в сетодах эементы пути '\1aug2\', '\2aug2\', '\3aug2\'

In [26]:
# Запускаем на выполнение
J.tab1fromtxt(txtfile_path, csvfilename) 
J.tab2fromtxt(txtfile_path, csvfilename) 
J.tab3fromtxt(txtfile_path, csvfilename) 

Проаверяем в папках, размер файлов почти в два раза меньше, так и должно быть, столбцов-то с суммами нет.



Посты чуть ниже также могут вас заинтересовать

Комментариев нет:

Отправить комментарий