Changeset 182 for trunk/aeres/scripts
- Timestamp:
- 04/09/12 19:21:48 (12 years ago)
- Location:
- trunk/aeres/scripts
- Files:
-
- 1 edited
- 1 copied
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/aeres/scripts/aeresrh.py
r181 r182 51 51 :: 52 52 53 aeresrh.py - ifile ${PROJECT}/data/aeresrh.xls53 aeresrh.py --ifile ${PROJECT}/data/aeresrh.xls 54 54 55 55 TODO … … 60 60 ne marche pas avec des chemins relatifs 61 61 62 apprendre a faire un slab pour supprimer header/title/footer63 64 62 append sur ifiles car liste permanent et liste thesard 65 63 … … 70 68 missing values 71 69 72 remove hard coded number of columns for surname, firstname, ...73 74 70 coding rules (pylint) 75 76 71 77 72 EVOLUTIONS … … 81 76 82 77 $URL$ 78 79 - fplod 20120409 80 81 * no more hard coded column number 83 82 84 83 - fplod 20120406 … … 107 106 print("Failed to import xlrd from any known place") 108 107 sys.exit(1) 108 109 from build_surname_id import build_surname_id 110 from build_firstname_id import build_firstname_id 109 111 110 112 def get_option_parser (): … … 130 132 return parser 131 133 134 def 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 132 148 def readrh(ifile, is_verbose): 133 149 … … 160 176 print('values of in col %d : %s' % (colnum, sh.col_values(colnum))) 161 177 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)) 168 224 169 225 datemode = 0 170 226 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) 176 229 177 230 if is_verbose == True: … … 179 232 print(' surname %s' % surname) 180 233 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] 186 235 187 236 if is_verbose == True: … … 189 238 print(' firstname %s' % firstname) 190 239 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] 197 241 arrival = [] 198 242 for rownum in range(len(temp)): … … 206 250 #arrival.append(datetime.datetime(*xlrd.xldate_as_tuple(temp[rownum],datemode))) 207 251 208 209 252 if is_verbose == True: 210 253 print(' nb arrival %d' % len(arrival)) 211 254 print(' arrival %s' % arrival) 212 255 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] 218 257 219 258 if is_verbose == True: … … 225 264 def aeresrh(): 226 265 """main 227 266 """ 228 267 try: 229 268 parser = get_option_parser () … … 238 277 239 278 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') 243 291 244 292 # 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 1 4 """ 2 generation de la partie "prenom" de l'id 5 6 ===================== 7 build_firstname_id.py 8 ===================== 9 10 DESCRIPTION 11 =========== 12 13 generation de la partie "prénom" de l'id 14 3 15 4 16 SEE ALSO 5 17 ======== 6 18 7 :ref:`surname_id.xsl` 19 :ref:`firstname_id.xsl` 20 21 EXAMPLES 22 ======== 23 24 cf. doctest 25 26 :: 27 28 python -v build_firstname_id 8 29 9 30 TODO 10 31 ==== 11 32 12 still draft 33 EVOLUTIONS 34 ========== 13 35 14 flat ascii 36 $Id$ 15 37 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 19 43 20 44 """ 21 def surname_id(surname): 45 46 import string 47 import sys 48 49 def build_firstname_id(firstname): 22 50 23 51 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 """ 25 64 26 return surname_id 65 if len(firstname) == 0: 66 print('eee : firstname empty') 67 sys.exit(-1) 27 68 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 97 if __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 1 4 """ 2 generation de la partie "prenom" de l'id 5 6 =================== 7 build_surname_id.py 8 =================== 9 10 DESCRIPTION 11 =========== 12 13 generation de la partie "nom" de l'id 14 3 15 4 16 SEE ALSO … … 7 19 :ref:`surname_id.xsl` 8 20 21 EXAMPLES 22 ======== 23 24 cf. doctest 25 26 :: 27 28 python -v build_surname_id 29 9 30 TODO 10 31 ==== 11 32 12 still draft 33 EVOLUTIONS 34 ========== 13 35 14 flat ascii 36 $Id$ 15 37 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 19 47 20 48 """ 21 def surname_id(surname): 49 50 import string 51 import sys 52 53 def build_surname_id(surname): 22 54 23 55 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 25 96 26 97 return surname_id 27 98 99 if __name__ == "__main__": 100 import doctest 101 doctest.testmod()
Note: See TracChangeset
for help on using the changeset viewer.