Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python解析简单的文本文件_Python_File - Fatal编程技术网

用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]