在python中解析一个简单的文本文件

时间:2014-01-27 11:05:58

标签: python file

我从csv文件中获取了以下文本文件。这个文件有两个长的正确显示,所以这里是行信息:
该文件有5行:
第一个在ETIQUETAS开始。第二个星在RECURSOS中。第三个在{{1}开始第4个从DATOS CLIENTE Y PIEZA开始,第5个,最后一个从Numero Referencia开始。

  

ETIQUETAS:;;;;;;;;; START ;;;;;;;;;;;;;;;;;;;;; END ;;   RECURSOS:;;;;;;;;; 0; 0; 0; 0; 0; 0; 0; 0; 0; 1; 0; 0; 0; 0; 0; 0; 1; 1; 1; 0 ; 1; 0 ;; Nota:0   等于infinito,para decir que no existen recursos usar un numero   negativo
DATOS CLIENTE Y PIEZA ;;;; PLAZOS Y PROCESOS ;;;;;;;;; hoja   de ruta; MU ;;;;;;;;;;;;;;;;;
Numero Referencia; Descripcion   Referencia; Nombre Cliente; Codigo Cliente; PLAZO DE   ENTREGA; piezas; PROCESO; MATERIAL; stock; PROVEEDOR; tiempo ida   puldor; pzas dia; TPO; tiempo vuelta pulidor; TIEMPO RECEPCION; CONTROL   CALIDAD DE ENTRADA; TIEMPO控制CALIDAD DE ENTRADA; ALMACEN A(ANTES   DE ENTRAR   MAQUINA); GRANALLA; TPO; LIMPIADO; TPO; BRILLADO; TPO ;; CARGA; MAQUINA; SOLTAR;控制; EMPAQUETADO; ALMACENB; TIEMPO;
  BRIDA Al; BRIDA Al; AEROGRAFICAS AHE,   S.A.; 394 ;;; niquelado; ALUMINIO ;;;; matriz ;;; 5分钟; NO ;; 3dias ;;;;;;;; 1; 1; 1 ;; 1; 4D ;;

我想做两件事:

  1. 计算第一行BRIDA AlSTART之间的值,并将其保存为END。这意味着如果我TOTAL_NUMBERS必须计算3; START;;END本身,两个START;;之间的空白。在测试示例中,END必须计算START;;;;;;;;;;;;;;;;;;;;;END
  2. 到目前为止我尝试过:

    22

    2.检查文件,直到出现单词f = open("lt.csv", 'r') array = [] for line in f: if 'START' in line: for i in line.split(";"): array.append(i) i = 0 while i < len(array): if i == 'START': # START COUNTING, I DONT KNOW HOW TO CONTINUE i = i + 1 ,并将该单词和以下PROVEEDOR(在示例中为TOTAL_NUMBERS)保存在阵列上。 这意味着它必须保存:

    22

    提前致谢。

1 个答案:

答案 0 :(得分:2)

我假设文件被分成两行; START和END的第一行,然后是需要解析的长行。这应该有效:

with open('somefile.txt') as f:
   first_row = next(f).strip().split(';')
   TOTAL_NUMBER = len(first_row[first_row.index('START'):first_row.index('END')+1])
   bits = ''.join(line.rstrip() for line in f).split(';')
   final_array = bits[bits.index('PROVEEDOR'):bits.index('PROVEEDOR')+TOTAL_NUMBER]
相关问题