Changeset 182 for trunk/aeres/scripts


Ignore:
Timestamp:
04/09/12 19:21:48 (12 years ago)
Author:
pinsard
Message:

try to progress in author list

Location:
trunk/aeres/scripts
Files:
1 edited
1 copied
1 moved

Legend:

Unmodified
Added
Removed
  • trunk/aeres/scripts/aeresrh.py

    r181 r182  
    5151:: 
    5252 
    53  aeresrh.py -ifile ${PROJECT}/data/aeresrh.xls 
     53 aeresrh.py --ifile ${PROJECT}/data/aeresrh.xls 
    5454 
    5555TODO 
     
    6060ne marche pas avec des chemins relatifs 
    6161 
    62 apprendre a faire un slab pour supprimer header/title/footer 
    63  
    6462append sur ifiles car liste permanent et liste thesard 
    6563 
     
    7068missing values 
    7169 
    72 remove hard coded number of columns for surname, firstname, ... 
    73  
    7470coding rules (pylint) 
    75  
    7671 
    7772EVOLUTIONS 
     
    8176 
    8277$URL$ 
     78 
     79- fplod 20120409 
     80 
     81  * no more hard coded column number 
    8382 
    8483- fplod 20120406 
     
    107106    print("Failed to import xlrd from any known place") 
    108107    sys.exit(1) 
     108 
     109from build_surname_id import build_surname_id 
     110from build_firstname_id import build_firstname_id 
    109111 
    110112def get_option_parser (): 
     
    130132    return parser 
    131133 
     134def find_in_dict(d, criterion, lookup): 
     135    """ 
     136    >>> people = {'pk1':{'firstname':'Brian', 'age':42}, 'pk2':{'firstname':'Alex', 'age':50}} 
     137    >>> find_in_dict(people, 'age', 42) 
     138 
     139    http://stackoverflow.com/questions/8987631/searching-2-dimensional-dictionary 
     140    """ 
     141 
     142    result = [] 
     143    for key, val in d.iteritems(): 
     144        if criterion in val and val[criterion] == lookup: 
     145            result.append((key,val)) 
     146    return result 
     147 
    132148def readrh(ifile, is_verbose): 
    133149 
     
    160176            print('values of in col %d : %s' % (colnum, sh.col_values(colnum))) 
    161177 
    162     offsetrow = 12 
    163  
    164     colsurname = 1 
    165     colfirstname = 2 
    166     colarrival = 14 
    167     colpubli = 17 
     178    # detect title row 
     179    for rownum in range(sh.nrows): 
     180        if sh.row_values(rownum)[0] == 't': 
     181            titlerow = rownum  
     182    if is_verbose == True: 
     183            print('titlerow : %d ' % (titlerow)) 
     184 
     185    # deduce first usefull row 
     186    firstrow = titlerow + 1 
     187    # 
     188    # detect last usefull row 
     189    uselessrow = [] 
     190    for rownum in range(titlerow,sh.nrows): 
     191        if sh.row_values(rownum)[0] == '':  
     192            uselessrow.append(rownum) 
     193    lastrow = uselessrow[0] 
     194    if is_verbose == True: 
     195            print('lastrow : %d ' % (lastrow)) 
     196 
     197    # detect surname column 
     198    for colnum in range(sh.ncols): 
     199        if sh.col_values(colnum)[titlerow] == 'nom': 
     200            colsurname = colnum 
     201    if is_verbose == True: 
     202            print('colsurname: %d ' % (colsurname)) 
     203 
     204    # detect firstname column 
     205    for colnum in range(sh.ncols): 
     206        if sh.col_values(colnum)[titlerow] == 'prenom': 
     207            colfirstname = colnum 
     208    if is_verbose == True: 
     209            print('colfirstname: %d ' % (colfirstname)) 
     210 
     211    # detect arrival column 
     212    for colnum in range(sh.ncols): 
     213        if sh.col_values(colnum)[titlerow] == u'arrivée': 
     214            colarrival = colnum 
     215    if is_verbose == True: 
     216            print('colarrival: %d ' % (colarrival)) 
     217 
     218    # detect publi column 
     219    for colnum in range(sh.ncols): 
     220        if sh.col_values(colnum)[titlerow] == u'publi': 
     221            colpubli = colnum 
     222    if is_verbose == True: 
     223            print('colpubli: %d ' % (colpubli)) 
    168224 
    169225    datemode = 0  
    170226 
    171     surname = sh.col_values(colsurname) 
    172     # remove elements because it is the title/header/footer 
    173     surname[0:offsetrow] = 'remove' 
    174     surname[-1] = 'remove' 
    175     surname = filter(lambda surname: surname != 'remove', surname) 
     227    surname = sh.col_values(colsurname)[firstrow:lastrow] 
     228    print ('surname 0000 %s ' % surname) 
    176229 
    177230    if is_verbose == True: 
     
    179232       print(' surname %s' % surname) 
    180233 
    181     firstname = sh.col_values(colfirstname) 
    182     # remove elements because it is the title/header/footer 
    183     firstname[0:offsetrow] = 'remove' 
    184     firstname[-1] = 'remove' 
    185     firstname = filter(lambda firstname: firstname != 'remove', firstname) 
     234    firstname = sh.col_values(colfirstname)[firstrow:lastrow] 
    186235 
    187236    if is_verbose == True: 
     
    189238       print(' firstname %s' % firstname) 
    190239 
    191     temp = sh.col_values(colarrival) 
    192     # remove elements because it is the title/header/footer 
    193     temp[0:offsetrow] = 'remove' 
    194     temp[-1] = 'remove' 
    195     temp = filter(lambda temp: temp != 'remove', temp) 
    196     # transform to datetime 
     240    temp = sh.col_values(colarrival)[firstrow:lastrow] 
    197241    arrival = [] 
    198242    for rownum in range(len(temp)): 
     
    206250            #arrival.append(datetime.datetime(*xlrd.xldate_as_tuple(temp[rownum],datemode))) 
    207251 
    208  
    209252    if is_verbose == True: 
    210253       print(' nb arrival %d' % len(arrival)) 
    211254       print(' arrival %s' % arrival) 
    212255 
    213     publi = sh.col_values(colpubli) 
    214     # remove elements because it is the title/header/footer 
    215     publi[0:offsetrow] = 'remove' 
    216     publi[-1] = 'remove' 
    217     publi = filter(lambda publi: publi != 'remove', publi) 
     256    publi = sh.col_values(colpubli)[firstrow:lastrow] 
    218257 
    219258    if is_verbose == True: 
     
    225264def aeresrh(): 
    226265    """main 
    227         """ 
     266    """ 
    228267    try: 
    229268        parser = get_option_parser () 
     
    238277 
    239278    surname, firstname, arrival, publi = readrh(ifile, is_verbose) 
    240  
    241     for i, surname, firstname in enumerate(surname, firstname): 
    242         print (' %s_%s' % (surname[i], firstname[i])) 
     279    # 
     280    # build surname id 
     281    surname_id = build_surname_id(surname) 
     282    firstname_id = build_firstname_id(firstname) 
     283    # 
     284    # populate dictionary 
     285    #++people = {} 
     286    #++for index, onesurname in enumarate(surname): 
     287    #++   print (' surname %s' % (surname)) 
     288    #++   people[n] = surname[index] 
     289 
     290    find_in_dict(people, 'surname', 'Pinsard') 
    243291 
    244292# Run main, if called from the command line 
  • trunk/aeres/scripts/build_firstname_id.py

    r181 r182  
     1#!/usr/bin/env python 
     2# -*- coding: iso-8859-1 -*- 
     3 
    14""" 
    2     generation de la partie "prenom" de l'id 
     5 
     6===================== 
     7build_firstname_id.py 
     8===================== 
     9 
     10DESCRIPTION 
     11=========== 
     12 
     13generation de la partie "prénom" de l'id 
     14 
    315 
    416SEE ALSO 
    517======== 
    618 
    7 :ref:`surname_id.xsl` 
     19:ref:`firstname_id.xsl` 
     20 
     21EXAMPLES 
     22======== 
     23 
     24cf. doctest 
     25 
     26:: 
     27 
     28    python -v build_firstname_id 
    829 
    930TODO 
    1031==== 
    1132 
    12 still draft 
     33EVOLUTIONS 
     34========== 
    1335 
    14 flat ascii 
     36$Id$ 
    1537 
    16 enlever les punctuations 
    17 enlever les blancs debut et fin 
    18 enlever le blancs milieu 
     38$URL$ 
     39 
     40- fplod 20120409 
     41 
     42  * creation 
    1943 
    2044""" 
    21 def surname_id(surname): 
     45 
     46import string 
     47import sys 
     48 
     49def build_firstname_id(firstname): 
    2250 
    2351 
    24     surname_id = surname.upper() 
     52    """ 
     53    >>> firstname = [] 
     54    [] 
     55    >>> firstname.append(' Ginette') 
     56    [' Ginette'] 
     57    >>> firstname.append('Gin ette ') 
     58    [' Ginette', 'Gin  ette'] 
     59    >>> firstname.append("G\'in ette ") 
     60    [' Ginette', 'Gin ette', "G\'in ette"] 
     61    >>> firstname_id = build_firstname_id(firstname) 
     62    ['ginette','ginette','ginette'] 
     63    """ 
    2564 
    26     return surname_id 
     65    if len(firstname) == 0: 
     66        print('eee : firstname empty') 
     67        sys.exit(-1) 
    2768 
     69    # convert to str 
     70    #++firstname_str = [str(item) for item in firstname] 
     71    #++firstname_str = [item.encode('iso-8859-1','replace') for item in firstname] 
     72    firstname_str = [item.encode('iso-8859-1','xmlcharrefreplace') for item in firstname] 
     73    for item in firstname: 
     74        print ('iii : item type %s : %s ' % (item, type(item))) 
     75 
     76    # remove white space before and after 
     77    firstname_id = map(str.strip,firstname_str) 
     78    #print ('1 sans blan debut fin %s' % firstname_id) 
     79    # 
     80    # lower 
     81    firstname_id = map(str.lower,firstname_id) 
     82    #print ('2 upper %s' % firstname_id) 
     83    # 
     84    # remove white space inside 
     85    firstname_id_no_spaces = [x.replace(' ', '') for x in firstname_id] 
     86    #print ('3 sans blanc milieu %s' % firstname_id_no_spaces) 
     87    firstname_id = firstname_id_no_spaces 
     88    # 
     89    # remove punctuation 
     90    for c in string.punctuation: 
     91        firstname_id_no_punctuation = [x.replace(c, '') for x in firstname_id] 
     92        #print ('4 sans %s avec replace string.punctuation %s' % (c, firstname_id_no_punctuation)) 
     93        firstname_id = firstname_id_no_punctuation 
     94 
     95    return firstname_id 
     96 
     97if __name__ == "__main__": 
     98    import doctest 
     99    doctest.testmod() 
  • trunk/aeres/scripts/build_surname_id.py

    r181 r182  
     1#!/usr/bin/env python 
     2# -*- coding: iso-8859-1 -*- 
     3 
    14""" 
    2     generation de la partie "prenom" de l'id 
     5 
     6=================== 
     7build_surname_id.py 
     8=================== 
     9 
     10DESCRIPTION 
     11=========== 
     12 
     13generation de la partie "nom" de l'id 
     14 
    315 
    416SEE ALSO 
     
    719:ref:`surname_id.xsl` 
    820 
     21EXAMPLES 
     22======== 
     23 
     24cf. doctest 
     25 
     26:: 
     27 
     28    python -v build_surname_id 
     29 
    930TODO 
    1031==== 
    1132 
    12 still draft 
     33EVOLUTIONS 
     34========== 
    1335 
    14 flat ascii 
     36$Id$ 
    1537 
    16 enlever les punctuations 
    17 enlever les blancs debut et fin 
    18 enlever le blancs milieu 
     38$URL$ 
     39 
     40- fplod 20120409 
     41 
     42  * work with fake data 
     43 
     44- fplod 20120407 
     45 
     46  * creation 
    1947 
    2048""" 
    21 def surname_id(surname): 
     49 
     50import string 
     51import sys 
     52 
     53def build_surname_id(surname): 
    2254 
    2355 
    24     surname_id = surname.upper() 
     56    """ 
     57    >>> surname = [] 
     58    [] 
     59    >>> surname.append(' Tartempillion ') 
     60    [' Tartempillion '] 
     61    >>> surname.append('Tar tempillion ') 
     62    [' Tartempillion ', 'Tar tempillion '] 
     63    >>> surname.append("T\'ar tempillion ") 
     64    [' Tartempillion ', 'Tar tempillion ', "T\'ar tempillion "] 
     65    >>> surname_id = build_surname_id(surname) 
     66    ['TARTEMPILLION','TARTEMPILLION','TARTEMPILLION'] 
     67    """ 
     68 
     69    if len(surname) == 0: 
     70        print('eee : surname empty') 
     71        sys.exit(-1) 
     72 
     73    # convert to str 
     74    surname_str = [str(item) for item in surname] 
     75    for item in surname: 
     76        print ('iii : item type %s : %s ' % (item, type(item))) 
     77 
     78    # remove white space before and after 
     79    surname_id = map(str.strip,surname_str) 
     80    #print ('1 sans blan debut fin %s' % surname_id) 
     81    # 
     82    # upper 
     83    surname_id = map(str.upper,surname_id) 
     84    #print ('2 upper %s' % surname_id) 
     85    # 
     86    # remove white space inside 
     87    surname_id_no_spaces = [x.replace(' ', '') for x in surname_id] 
     88    #print ('3 sans blanc milieu %s' % surname_id_no_spaces) 
     89    surname_id = surname_id_no_spaces 
     90    # 
     91    # remove punctuation 
     92    for c in string.punctuation: 
     93        surname_id_no_punctuation = [x.replace(c, '') for x in surname_id] 
     94        #print ('4 sans %s avec replace string.punctuation %s' % (c, surname_id_no_punctuation)) 
     95        surname_id = surname_id_no_punctuation 
    2596 
    2697    return surname_id 
    2798 
     99if __name__ == "__main__": 
     100    import doctest 
     101    doctest.testmod() 
Note: See TracChangeset for help on using the changeset viewer.