每 14 行更改一次信息 python

change information every 14 rows python

我目前正在尝试获取每 14 行中的第一个日期,并在接下来的日期替换它。例如:我将这些数据保存在一个 txt 文件中

02/dez  06:03   18.45   0.16    18.45   0.04
02/dez  06:03   17.56   0.26    17.62   0.21
02/dez  06:03   16.43   0.39    16.65   0.34
02/dez  06:03   12.72   0.39    14.35   0.38
02/dez  06:03   4.70    0.49    5.29    0.49
02/dez  06:03   3.87    0.41    4.41    0.41
02/dez  06:03   3.53    0.36    4.04    0.33
02/dez  06:04   2.62    0.55    3.05    0.54
02/dez  06:04   1.69    0.44    1.96    0.46
02/dez  06:04   1.59    0.34    1.85    0.35
02/dez  06:04   1.56    0.31    1.80    0.29
02/dez  06:04   0.54    0.51    0.64    0.50
02/dez  06:04   0.47    0.43    0.56    0.45
02/dez  06:04   0.00    0.48    0.00    0.50
02/dez  06:19   18.87   0.12    18.78   0.04
02/dez  06:19   18.32   0.23    18.18   0.23
02/dez  06:19   17.75   0.47    17.57   0.36
02/dez  06:19   16.63   0.51    16.31   0.41
02/dez  06:19   7.07    0.77    6.77    0.64
02/dez  06:19   5.86    0.65    5.56    0.55
02/dez  06:19   5.44    0.59    5.04    0.46
02/dez  06:20   4.32    0.78    3.80    0.66
02/dez  06:20   2.91    0.72    2.41    0.55
02/dez  06:20   2.85    0.67    2.24    0.47
02/dez  06:20   2.85    0.68    2.16    0.39
02/dez  06:20   0.98    0.85    0.76    0.60
02/dez  06:20   0.74    0.72    0.65    0.53
02/dez  06:20   0.00    0.73    0.00    0.60
02/dez  06:34   18.91   0.10    18.88   0.03
02/dez  06:34   18.44   0.29    18.39   0.20
02/dez  06:34   17.95   0.41    17.91   0.35
02/dez  06:34   17.07   0.51    17.09   0.47
02/dez  06:34   7.79    0.82    8.17    0.78
02/dez  06:34   6.40    0.73    6.86    0.71
02/dez  06:35   5.89    0.67    6.36    0.61
02/dez  06:35   4.49    0.83    4.92    0.86
02/dez  06:35   2.88    0.74    3.20    0.75
02/dez  06:35   2.69    0.66    3.04    0.70
02/dez  06:35   2.62    0.58    2.99    0.63
02/dez  06:35   0.94    0.82    1.10    0.88
02/dez  06:35   0.80    0.75    0.94    0.82
02/dez  06:35   0.00    0.85    0.00    0.89
                   .
                   .
                   .

我想要实现的是:

02/dez;06:03;18.45;0.16;18.45;0.04
02/dez;06:03;17.56;0.26;17.62;0.21
02/dez;06:03;16.43;0.39;16.65;0.34
02/dez;06:03;12.72;0.39;14.35;0.38
02/dez;06:03;4.70;0.49;5.29;0.49
02/dez;06:03;3.87;0.41;4.41;0.41
02/dez;06:03;3.53;0.36;4.04;0.33
02/dez;06:03;2.62;0.55;3.05;0.54
02/dez;06:03;1.69;0.44;1.96;0.46
02/dez;06:03;1.59;0.34;1.85;0.35
02/dez;06:03;1.56;0.31;1.80;0.29
02/dez;06:03;0.54;0.51;0.64;0.50
02/dez;06:03;0.47;0.43;0.56;0.45
02/dez;06:03;0.00;0.48;0.00;0.50
02/dez;06:19;18.87;0.12;18.78;0.04
02/dez;06:19;18.32;0.23;18.18;0.23
02/dez;06:19;17.75;0.47;17.57;0.36
02/dez;06:19;16.63;0.51;16.31;0.41
02/dez;06:19;7.07;0.77;6.77;0.64
02/dez;06:19;5.86;0.65;5.56;0.55
02/dez;06:19;5.44;0.59;5.04;0.46
02/dez;06:19;4.32;0.78;3.80;0.66
02/dez;06:19;2.91;0.72;2.41;0.55
02/dez;06:19;2.85;0.67;2.24;0.47
02/dez;06:19;2.85;0.68;2.16;0.39
02/dez;06:19;0.98;0.85;0.76;0.60
02/dez;06:19;0.74;0.72;0.65;0.53
02/dez;06:19;0.00;0.73;0.00;0.60
02/dez;06:34;18.91;0.10;18.88;0.03
02/dez;06:34;18.44;0.29;18.39;0.20
02/dez;06:34;17.95;0.41;17.91;0.35
02/dez;06:34;17.07;0.51;17.09;0.47
02/dez;06:34;7.79;0.82;8.17;0.78
02/dez;06:34;6.40;0.73;6.86;0.71
02/dez;06:34;5.89;0.67;6.36;0.61
02/dez;06:34;4.49;0.83;4.92;0.86
02/dez;06:34;2.88;0.74;3.20;0.75
02/dez;06:34;2.69;0.66;3.04;0.70
02/dez;06:34;2.62;0.58;2.99;0.63
02/dez;06:34;0.94;0.82;1.10;0.88
02/dez;06:34;0.80;0.75;0.94;0.82
02/dez;06:34;0.00;0.85;0.00;0.89
02/dez;06:50;19.81;0.12;19.36;0.04
02/dez;06:50;19.57;0.27;19.06;0.21
02/dez;06:50;19.37;0.48;18.79;0.40
02/dez;06:50;18.94;0.59;18.42;0.49
02/dez;06:50;15.15;1.53;13.23;1.26
02/dez;06:50;10.78;1.23;11.06;1.19
02/dez;06:50;9.13;1.06;10.11;1.10
02/dez;06:50;6.99;1.23;7.79;1.31
02/dez;06:50;4.54;1.21;4.97;1.22
02/dez;06:50;4.27;1.11;4.63;1.12
02/dez;06:50;4.15;1.04;4.45;1.08
02/dez;06:50;1.51;1.30;1.61;1.29
02/dez;06:50;1.29;1.25;1.34;1.19
02/dez;06:50;0.00;1.35;0.00;1.31
            .
            .
            .

我的代码对于文件中的 14 行工作正常,但我无法在第 14、28、42、56 行中获取日期并在接下来的 13 行中替换它。 这是我的代码:

result = []
with open('test.txt') as f:
    lines = f.readlines()
    firstLines = lines[0].strip().split('   ')
    hour = firstLines[1]
    for line in lines:
        col = line.strip().split('  ')
        if col[1] != hour:
            col[1] = hour
        result.append(col)
    outfile = open('result.txt', 'w')
    for i in result:
        outfile.write(';'.join(i) + "\n")

我尝试了一些东西:

with open(filename) as f:
    lines = f.readlines()
    for i in range(0, len(lines), 14):
        firstLines = lines[0].strip().split('   ')
        hour = firstLines[1]
        #col = lines[i:i + 14] I got stuck here

有人可以帮助我吗?

您有一个以 14 步为单位运行的 for 循环,到目前为止一切顺利。然后在第一个从 0 到 13 的循环中添加第二个 for 循环,并将值复制到字段中。

如果行数不是 14 的倍数,您必须添加一些额外的代码(假设您有 32 行,那么您有 2 组完整的 14 和一组只有 4 ).

或者,您可以查看 pandas 包,它更适合读取此类数据文件并对其进行操作,但此处的解释有点超出范围。快速浏览一下。

你熟悉the modulo (%) operator吗?使用它会让您知道何时开始新的一行。所以,像这样:

for line_number, line in enumerate(lines):
   if (line_number % 14) == 0:
        # Every 14th row, save the value of column 1 as curHour
        curHour = col[1]
    # Use the value of curHour which changes every 14th row
    result[1] = curHour
    ...

类似这样的东西可能需要一些调整。

with open(filename) as f:
    lines = f.readlines()
    for i in range(0, len(lines), 14):
        firstLines = lines[0].strip().split('   ')
        hour = firstLines[1]
        for j in range(i, i+14):
            line = lines[j]
            line.strip().split('   ')[0] = hour