-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfilter_candidates_csv.py
More file actions
72 lines (55 loc) · 2.4 KB
/
filter_candidates_csv.py
File metadata and controls
72 lines (55 loc) · 2.4 KB
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
import csv
FIELD_NAMES = ['numeroSequencial', 'cpf', 'nomeUrna', 'sexo', 'nomeCandidato',
'dtNascimento', 'descricaoCargo', 'descricaoSituacao', 'sigla',
'nomePartido', 'ano', 'unidadeEleitoral', 'unidadeFederativa',
'descricaoResultado', 'turno']
def parse_candidate(row):
candidate = dict()
candidate['numeroSequencial'] = row['numero_sequencial']
candidate['cpf'] = row['cpf']
candidate['nomeUrna'] = row['nome_urna']
candidate['sexo'] = row['descricao_genero']
candidate['nomeCandidato'] = row['nome']
candidate['dtNascimento'] = row['data_nascimento']
candidate['descricaoCargo'] = row['descricao_cargo']
candidate['descricaoSituacao'] = row['descricao_situacao_candidatura']
candidate['sigla'] = row['sigla_partido']
candidate['nomePartido'] = row['nome_partido']
candidate['ano'] = row['ano_eleicao']
candidate['unidadeEleitoral'] = row['descricao_ue']
candidate['unidadeFederativa'] = row['sigla_uf']
candidate['descricaoResultado'] = row['descricao_totalizacao_turno']
candidate['turno'] = row['numero_turno']
return candidate
def validate_candidate(candidate):
existing_fields = ['nomeCandidato', 'descricaoCargo', 'descricaoSituacao',
'sigla', 'ano', 'unidadeEleitoral',
'unidadeFederativa', 'descricaoResultado', 'turno']
if int(candidate['cpf']) <= 0:
return False
elif int(candidate['numeroSequencial']) <= 0:
return False
elif int(candidate['ano']) != 2004:
return False
else:
for i in existing_fields:
if not candidate[i]:
return False
return True
if __name__ == '__main__':
counter = 0
with open('candidatura.csv', mode='r') as csvfile:
readCSV = csv.DictReader(csvfile)
with open('new_candidates.csv', mode='w') as new_csv_file:
writer = csv.DictWriter(new_csv_file, fieldnames=FIELD_NAMES)
writer.writeheader()
for row in readCSV:
if counter == 0:
print(f'Column names = {", ".join(row)}')
counter += 1
else:
candidate = parse_candidate(row)
if validate_candidate(candidate):
writer.writerow(candidate)
counter += 1
print('Total of valid rows = ', counter)