每 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
我目前正在尝试获取每 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