读取数据文件中的每5行并附加到新列表

时间:2017-03-11 07:09:28

标签: python kml python-3.6

我试图将每隔5行分开追加到一个新文件,每五行的第一行都有我需要的数据,这是我打印时没有任何错误但输出的唯一方法新数据文件的第二行(作为测试)应该是我原始文件的第六行,返回原始文件的第二行,我的新数据的len应该只有2400行而不是202571行。一旦我得到所需的行,我就可以将数据放入kml文件中。

dataList = []
line_count = 0
for line in lineList:
    line_count+= 5
    dataList.append(line)
    line_count += 5
print (format(len(dataList)))
print (dataList [1])



202571
M010176A         B:  0    0   0 S:  0    0   0 M: 12   30 135 CMT: 1 BOXHD:          9.4

3 个答案:

答案 0 :(得分:0)

我认为你在迭代循环时使用了错误的逻辑。您的代码如下所示。

line_count = 4
for line in lineList:
    line_count += 1
    if line_count == 5:
        line_count = 0
        dataList.append(line)

在上面的代码中,无论如何,您都将每行附加到dataList!因为没有逻辑来检查它是否是第五行然后附加到列表中。

以下更改可能会让您实现目标。

public function department()
{
    $this->load->model('insert_model');
    $data['dept'] = $this->insert_model->category_name_get();
    $this->load->view('view_file_name',$data);
}

应用这些更改后,其余代码将正常运行。希望它有所帮助!

答案 1 :(得分:0)

这是一种简单的方法:它将遍历所有行并检查该行是否可被5整除,因此%5 。如果您希望它从0开始,只需删除+ 1即可。如果您只是想将其输出到文件中,我认为通过在阅读其他文件时写入来简化加速过程会更好。如果你想要我,我可以修改它,如果你需要任何帮助,请发表评论。

dataList = []
with open("in.kml", "r") as fi:
    for i, line in enumerate(fi):
        if (not (i % 5)):
            dataList.push(line)

答案 2 :(得分:0)

如果您只想输出每五行,那么Python islice()函数将为您提供以下帮助:

from itertools import islice

with open('input.txt') as f_input, open('output.kml', 'w') as f_output:
    for fifth in islice(f_input, 0, None, 5):
        f_output.write(fifth)