用python解析简单的文本文件
下面的文本文件取自用python解析简单的文本文件,python,file,Python,File,下面的文本文件取自csv文件。该文件有两个长度,需要在此处正确显示,因此这是行信息: 该文件有5行:第一行开始于ETIQUETAS第二行开始于RECURSOS第三行开始于DATOS CLIENTE Y PIEZA第四行开始于Numero referencea,第五行和最后一行开始于BRIDA Al ETIQUETAS:;;;;;;;;;开始完;;; 递归:;;;;;;;;;0;0;0;0;0;0;0;0;0;1.0;0;0;0;0;0;1.1.1.0;1.0;;注:0 等价于一个无穷大,第十个数
csv
文件。该文件有两个长度,需要在此处正确显示,因此这是行信息:该文件有
5行:
第一行开始于ETIQUETAS
第二行开始于RECURSOS
第三行开始于DATOS CLIENTE Y PIEZA
第四行开始于Numero referencea
,
第五行和最后一行开始于BRIDA Al
ETIQUETAS:;;;;;;;;;开始完;;;
递归:;;;;;;;;;0;0;0;0;0;0;0;0;0;1.0;0;0;0;0;0;1.1.1.0;1.0;;注:0
等价于一个无穷大,第十个数不存在
否定
达托斯客户Y PIEZA;;;;平胸;;;;;;;;;;霍哈
德鲁塔;<数字参考;描述
参照;名义客户;Codigo客户;普拉佐德酒店
恩特雷加;皮耶萨斯;普罗塞索;材料;股票证明人;田波依达
普利多;pzas-dia;TPO;tiempo vuelta pulidor;蒂恩波接收;控制
卡利达德恩特拉达;TIEMPO控制夹带杯;阿尔马森A(安提斯)
去污剂
马奎纳);格拉纳拉;TPO;林皮亚多;TPO;布里拉多;TPO;;卡加;马奎纳;索尔塔;控制恩帕奎塔多;阿拉木图;蒂恩波
新娘;新娘;AEROGRAFICAS AHE,
美国。;394;;;奈奎拉多;铝;;;;matriz;;;5min;不第三条;;;;;;;;1.1.1.1.4D
我想做两件事:
计算第一行的开始
和结束
之间的数字,包括在内,并将其保存为总数
。这意味着如果我已经START;;结束
必须计数3;<代码>开始/代码>本身,两个代码>之间的空白;代码>和结束
本身。在测试示例中,START;;;;;;;;;;;;;;;;;;;;;结束
必须计数22
到目前为止,我所尝试的:
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
提前谢谢。我假设文件分为两行;第一行包含开始和结束,然后是需要解析的长行。这应该起作用:
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]
第二个问题也被标记为1
,如果有人能解决这个问题,我将不胜感激代码>,它被丢弃了吗?您是否总是要停在ALMACENB代码>?它总是从PROVEEDOR
开始,在总数
之后结束(在本例中,22
)。你有问题吗。先谢谢你,伯翰,谢谢你。我已经尝试过你的解决方案,TOTAL_NUMBERS
给了我27
而不是22
。并且该文件有5行。第一个开始于ETIQUETAS
,第二个开始于RECURSOS
,第三个开始于DATOS CLIENTE Y PIEZA
,第四个开始于Numero Referencea
,第五个也是最后一个开始于BRIDA Al
。谢谢Burhan!现在显示22
。问题是,bits=f.readlines().split(“;”)
行也有问题。它向我显示了一个错误:ValueError:混合使用迭代和读取方法将丢失数据。这有什么问题?提前谢谢。
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]