Advertisement
Mochinov

Untitled

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