Advertisement
Mochinov

Untitled

Nov 20th, 2020
294
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.83 KB | None | 0 0
  1. from datetime import datetime
  2. import xlrd
  3. import re;
  4. from itertools import filterfalse
  5.  
  6.  
  7.  
  8. def formater_phone(string):
  9.     if string == None:
  10.         return None
  11.     phone = ''.join(x for x in string if x.isdigit())
  12.     logging.warning(phone)
  13.     return phone
  14.  
  15.  
  16.  
  17. def purge_dublicates(X):
  18.     unique_X = []
  19.     for i, row in enumerate(X):
  20.         if row not in X[i + 1:]:
  21.             unique_X.append(row)
  22.     return unique_X
  23.  
  24. def drop_string(string):
  25.     """Картина под названием 'Говнокод в серых тонах'"""
  26.     if len(string) == 4:
  27.         _s = str(string[0]) + ' ' + str(string[1])
  28.         _q = str(string[2]) + ' ' + str(string[3])
  29.         string = _s + ', ' + _q
  30.     if len(string) == 3:
  31.         _s =  str(string[1]) + str(string[2])
  32.         string = 'д ' + string[0] + ', '+  _s
  33.        
  34.     if len(string) == 5:
  35.         if not string[1].isdigit():
  36.             string = 'д ' + str(string[0]) + ' , кв' + str(string[2])
  37.         else:
  38.             _s = str(string[0]) + ' ' + str(string[1])
  39.             _q = str(string[2]) + ' ' + str(string[3])
  40.             string = _s + ', ' + _q
  41.  
  42.  
  43.     if len(string) == 1:
  44.         try:
  45.             res = string[0].split('-')
  46.             string = str(res[0]) + ', кв ' + str(res[1])
  47.         except:
  48.             string = string[0]
  49.     if len(string) == 0:
  50.         string = None
  51.        
  52.     if len(string) == 2:
  53.         string = ','.join(string)
  54.     return string
  55.         # res = string.split('-')
  56.         # return str(res[0]) + ', кв ' + str(res[1])
  57.     # except Exception as e:
  58.     #     print(string)
  59.         # return string.split('-')[0]
  60.  
  61. def convert_to_normal(string):
  62.     # try:
  63.     address = str(string[0]) + ', '+ str(string[1]).capitalize() + ', ' + str(drop_string(string[2:]))
  64.     # address = ', '.join([string[0], string[1], drop_string(string[2:])])
  65.     # except Exception as e:
  66.         # print(e)
  67.         # address = ''
  68.     return address
  69.  
  70. def formater_address(string):
  71.  
  72.     string = re.sub(r'\d{6}', '', string)
  73.     if not re.search('Самара', string):
  74.         return None
  75.     string = string.replace('  ', ' ')
  76.     # string = string.replace('д.', ',')
  77.     list_exclude = ['cамарская','г.', '    ','   ','пр-кт',',','область','ул','ш.','р-н', 'р-н.','.','Россия','обл.', 'Самарская', 'УЛ.', 'УЛ',  'домофон','обл', '    ','     ','этаж','поъез','поъезд','подъезд','ПР-КТ','не работает','Страна','Промыленный','Промышленный','ПР','Красноглинский','промыленный']
  78.  
  79.     for i in list_exclude:
  80.         string = string.replace(i, '')
  81.     string = string.strip()
  82.     string = string.split(' ')
  83.     while '' in string:
  84.         string.remove('')
  85.  
  86.     string = purge_dublicates(string)
  87.     list_exclude = ['Карла','КАРЛА','промышленный','п','ос', 'г','км','Стара','вор','СЗАГОРА','ШОС','эт']
  88.     for i,val in enumerate(list_exclude, start=0):
  89.         for j, vals in enumerate(string):
  90.             if val == vals:
  91.                 del string[j]
  92.  
  93.     if string[1].isdigit():
  94.         new_element = str(string[1]) + ' ' + str(string[1+1])
  95.         num = 1
  96.         del string[num]
  97.         del string[num]
  98.         string.insert(1, new_element)
  99.  
  100.     comlite_address = convert_to_normal(string)
  101.     return comlite_address
  102.  
  103.  
  104.  
  105.  
  106. def parse_data_exel(FILE):
  107.     """Метод парсит документ и возвращает список"""
  108.     # try:
  109.         # Экземпляр документа
  110.     lists = []
  111.     rb = xlrd.open_workbook(FILE,on_demand = True)
  112.     sheet = rb.sheet_by_index(0)
  113.     for rownum in range(sheet.nrows):
  114.         row = sheet.row_values(rownum)
  115.         lists.append(row)
  116.     pacient_list = []
  117.     for i, val in enumerate(lists, start=1):
  118.         if i > 1:
  119.             address = formater_address(val[5])
  120.             try:
  121.                 phone = formater_phone(val[7])
  122.             except Exception as e:
  123.                 phone = 80000000000
  124.             y, m, d, h, i, s = xlrd.xldate_as_tuple(val[2], rb.datemode)
  125.             date_of_birth = '{0}-{1}-{2}'.format(y, m, d)
  126.             if address != None:
  127.                 pacient_list.append({
  128.                     'FIO' : val[1],
  129.                     'date_birth' : date_of_birth,
  130.                     'address' :  address,
  131.                     'addition' : val[6],
  132.                     'phone' : int(phone),
  133.                     'reason' : val[12],
  134.                 })
  135.     return pacient_list
  136.     # except Exception as e:
  137.         # logging.info('Error parse document - %s' % (e))
  138.         # print('Error parse document - %s' % (e))
  139.  
  140.  
  141. pacient = parse_data_exel('call.xls')
  142.  
  143. for i, val in enumerate(pacient):
  144.     print("%s" % (pacient[i]['address']))
  145.  
  146.  
  147.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement