我从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 ;;
我想做两件事:
BRIDA Al
和START
之间的值,并将其保存为END
。这意味着如果我TOTAL_NUMBERS
必须计算3; START;;END
本身,两个START
和;;
之间的空白。在测试示例中,END
必须计算START;;;;;;;;;;;;;;;;;;;;;END
。到目前为止我尝试过:
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
提前致谢。
答案 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]