How to rescue specific parts of a txt?

Asked

Viewed 43 times

0

I am trying to recover specific data from a txt, for example from the following:

    Cod: 275          Nome: xxxxxxxxxxxxxxxx                            Funcao: xxxxxxxxxxxxxxxxxxxx                Dep.IR:  0 |
Admissão: 27/08/2012  Situação:Ativo                                                     Ocorrencia: 1 Salario:   1.630,00 |
+----------------------------------------------------------------------------------------------------------------------------+
    1 Salário                              30,00     1.630,00 |   11 INSS Sobre Salário                   9,00       187,84 |
5 D.S.R. Sobre Horas Extras                         16,91 |                                                             |
|   17 Horas Extras 50%                      5,00        55,57 |                                                             
|  152 DSR Adicional Noturno                             58,63 |                                                             |
| 1047 Adicional Noturno 25%               104,00       192,64 |                                                             
| 1403 Indenização Horas Itinere            18,00       133,36 |                                                             
+----------------------------------------------------------------------------------------------------------------------------+
| Base INSS Empresa:             2.087,11 Base INSS Func.:            2.087,11 Base INSS Func 13o Sal:                 0,00  
| Base FGTS 13o:                     0,00 Base F.G.T.S.:              2.087,11 F.G.T.S.:                             166,97  
| Base IRRF:                     2.087,11 Deducoes:                     187,84                                               
Proventos:                     2.087,11 Descontos:                    187,84 Liquido:                            1.899,27  |
+----------------------------------------------------------------------------------------------------------------------------+

+----------------------------------------------------------------------------------------------------------------------------+
| Cod: 752          Nome:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx             Funcao: xxxxxxxxxxxxxxxxxxx                 Dep.IR:  1 |
| Admissão: 04/09/2017  Situação:Ativo                                                     Ocorrencia: 1 Salario:   1.470,00 |
+----------------------------------------------------------------------------------------------------------------------------+
|    1 Salário                               6,00       294,00 |   11 INSS Sobre Salário                   9,00        26,00 |
|    5 D.S.R. Sobre Horas Extras                         13,03 |   39 Faltas (Dias)                        1,00        49,00 |
|   17 Horas Extras 50%                      1,30        13,03 |   45 INSS Sobre Férias                               169,18 |
|  270 Férias No Mês                        24,00     1.409,84 |   53 Liquido de Férias                             1.710,61 |
|  271 1/3 de Férias no Mês                             469,95 | 1055 Faltas (DSR)                         1,00        49,00 |
| 1403 Indenização Horas Itinere            10,00        66,82 |                                                             |
+----------------------------------------------------------------------------------------------------------------------------+
| Base INSS Empresa:             2.168,67 Base INSS Func.:            2.168,67 Base INSS Func 13o Sal:                 0,00  |
| Base FGTS 13o:                     0,00 Base F.G.T.S.:              2.168,67 F.G.T.S.:                             173,49  |
| Base IRRF:                       288,88 Deducoes:                     215,59                                               |
| Proventos:                     2.266,67 Descontos:                  2.003,79 Liquido:                              262,88  |
+----------------------------------------------------------------------------------------------------------------------------+
| Proventos:                     1.298,40 Descontos:                    103,87 Liquido:                            1.194,53  |
+----------------------------------------------------------------------------------------------------------------------------+

The part of extracting the data, for example Cod, Name, salary and the others I am able to do, reading line by line and using index, but I do not know if it is the ideal way or pythonica to do. Follow my code until then:

folha = open("xxxxx.txt")

linhas = folha.readlines()
list_func = []
#nome = linhas[linhas.find("nome:")+len("nome:"): linhas.find("Funcao:")+len("Funcao:")]
for i in range(0, len(linhas)):
        linha = linhas[i]
        try:
                cod  = linha[ linha.index("Cod:")+len("Cod:"): linha.index("Nome")]
                nome = linha[linha.index("Nome:")+len("Nome:"): linha.index("Funcao")]
                funcao = linha[linha.index("Funcao:")+len("Funcao:"): linha.index("Dep.IR")]
        except:
                funcionario = { 'Cod' : cod, 'Nome' : nome}
                print("Nome: " + funcionario['Nome'] + "Código: " + funcionario['Cod'])

My question is how I can separate employees by employee and play in an array, because I know the employee data starts at 'Cod' and end in 'Liquid', how can I do this check? I would like a tip

1 answer

0

Check whether the line contains the field to add to the list.

folha = open("xxxxx.txt")

linhas = folha.readlines()
list_func = []

for i in range(0, len(linhas)):
    linha = linhas[i]
    if "Cod:" in linha and "Nome:" in linha:
        cod  = linha[linha.index("Cod:")+len("Cod:"): linha.index("Nome:")].strip()
        nome = linha[linha.index("Nome:")+len("Nome:"): linha.index("Funcao:")].strip()
        list_func.append({"Cod": cod, "Nome:": nome})

print(list_func)
  • Wow, it’s simpler than I was imagining, thank you very much friend.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.