Tenho uma função:
def PegaDadosPartes(dados):
distribuicaoPara = VerificaDist(partes)
dados.append(str(distribuicaoPara) + " @")
for x in range(len(partes)):
dados.append(partes[x] + '@')
del partes[0:len(partes)]
return dados
Ela recebe um conjunto de dados (lista 'partes') de outra função, e alimenta uma outra lista ('dados') com essas informações, SENDO QUE a variável 'distribuicaoPara' chama a função 'VerificaDist(partes)' para obter seu valor.
Esse valor depende de uma série de tratamentos. Dentre eles, verificar se em 'partes' há CNPJ's ou CPF's, e tratar diferenciadamente caso a caso, assim:
def VerificaDist(partes):
posicao = []
temCnpj = 0
for x in range(len(partes)):
verificaOutroCnpj = re.search("\d{2}.\d{3}.\d{3}/\d{4}-\d{2}", partes[x])
if verificaOutroCnpj:
posicao.append("CNPJ " + verificaOutroCnpj.group())
temCnpj = temCnpj + 1
verificaCpf = re.search("\d{3}.\d{3}.\d{3}-\d{2}", partes[x]) #Se não achou CNPJ, busca CPF.
if verificaCpf:
posicao.append("CPF " + verificaCpf.group())
if temCnpj > 0:
Caso1(posicao) #Primeiro caso: consta CNPJ.
else:
Caso2(posicao) #Segundo caso: consta CPF.
Tanto em um quanto no outro caso, as funções de tratamento irão "fatiar" a variável, pois os critérios de tratamento são diferentes. No CNPJ o dígito antes da "/" determina o responsável. No CPF, o oitavo dígito define isso. A função final faz isso:
def TrataDistribuicao(alvos): #("Alvos" são as partes "fatiadas" da informação)
analisa = open('C:\\Regras.txt', 'r') #É o arquivo que contém as regras de designação de responsável, tipo "Se o dígito é 8 responsável fulano, se 7 cicrano" e assim por diante...
regrasDeDistribuicao = analisa.readlines()
for x in range(len(regrasDeDistribuicao)):
regrasDeDistribuicao[x] = regrasDeDistribuicao[x].split(',')
for x in range(len(regrasDeDistribuicao)):
if alvos[0] == regrasDeDistribuicao[x][0]:
distribuicaoPara = str("Distribuir para " + regrasDeDistribuicao[x][1] )
elif alvos[1] == regrasDeDistribuicao[x][0]:
distribuicaoPara = str("Distribuir para " + regrasDeDistribuicao[x][1])
elif alvos[2] == regrasDeDistribuicao[x][0]:
distribuicaoPara = str("Distribuir para " + regrasDeDistribuicao[x][1] )
elif alvos[3] == regrasDeDistribuicao[x][0]:
distribuicaoPara = str("Distribuir para " + regrasDeDistribuicao[x][1])
analisa.close()
Ocorre que, no final de tudo isso, não estou conseguindo "setar" a variável "distribuiçãoPara". Como fazer?