-
Notifications
You must be signed in to change notification settings - Fork 1
/
parse_fio.py
112 lines (76 loc) · 2.37 KB
/
parse_fio.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
import sqlite3
fio_dict = {}
gender_dict = {}
conn = sqlite3.connect('db/fio.db')
cursor = conn.cursor()
def search_in_surnames(surname):
cursor.execute("SELECT surname FROM surnames WHERE surname=?", ([surname.lower()]))
record = cursor.fetchone()
if record is None:
return False
else:
return True
def search_in_names(name):
cursor.execute("SELECT name FROM names WHERE name=?", ([name.lower()]))
record = cursor.fetchone()
if record is None:
return False
else:
return True
def search_in_midnames(midname):
cursor.execute("SELECT midname FROM midnames WHERE midname=?", ([midname.lower()]))
record = cursor.fetchone()
if record is None:
return False
else:
return True
def define_gender_by_surname(surname):
cursor.execute("SELECT gender FROM surnames WHERE surname=?", ([surname.lower()]))
record = cursor.fetchone()
if record is None:
return False
else:
if record[0] is None:
return False
else:
return record[0]
def define_gender_by_name(name):
cursor.execute("SELECT gender FROM names WHERE name=?", ([name.lower()]))
record = cursor.fetchone()
if record is None:
return False
else:
if record[0] is None:
return False
else:
return record[0]
def find_fio(value):
if search_in_midnames(value) is True:
fio_dict.update({'Midname': value})
elif search_in_names(value) is True:
fio_dict.update({'Name': value})
elif search_in_surnames(value) is True:
fio_dict.update({'Surname': value})
def define_gender(fio, value):
gender_by_surname = define_gender_by_surname(value)
if gender_by_surname is False:
gender_by_name = define_gender_by_name(value)
if gender_by_name is False:
gender_dict.update({'fio': fio, 'gender:': 'u'})
else:
gender_dict.update({'fio': fio, 'gender:': gender_by_name})
return True
else:
gender_dict.update({'fio': fio, 'gender:': gender_by_surname})
return True
def fio_parse(fio):
fio_lst = fio.split(' ')
for i in fio_lst:
find_fio(i)
return fio_dict
def gender_parse(fio):
fio_lst = fio.split(' ')
for i in fio_lst:
if define_gender(fio, i):
break
return gender_dict