2017-01-03 1 views
3

저는 현재 14 행마다 첫 번째 날짜를 가져오고 다음 날짜에 대체하려고합니다. 예는 :정보가 14 행마다 파이썬으로 변합니다.

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 행에 대해 잘 작동하지만 난에 붙어 : 나는 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 
        . 
        . 
        . 

내가 달성하기 위해 노력하고있어입니다 줄 14, 28, 42, 56에서 날짜를 가져 와서 다음 13 개의 행으로 바꿉니다.

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 

누군가가 나를 도울 수 :

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") 

내가 뭔가를 시도 : 여기 내 코드?

+0

출력 (줄) 및 출력을 말해주십시오 –

답변

6

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 
    ... 
+0

감사합니다! 그것은 작동합니다! 나는 그것에 대해 생각하지 않았다! – thiagorls

0

14 개의 단계로 실행되는 하나의 for-loop가 있습니다. 그런 다음 0에서 13까지 실행되는 첫 번째 루프 안에 두 번째 for 루프를 추가하고 값을 필드에 복사합니다.

줄 수가 14의 배수가 아닌 경우 (예 : 줄이 32 개인 경우 2 세트의 전체 14 세트와 단 4 세트가있는 경우) 추가 코드를 추가해야합니다. .

또는 pandas 패키지를 살펴볼 수 있습니다.이 패키지는 이러한 데이터 파일을 읽고 조작하는 데 훨씬 좋지만 여기서 설명하는 것은 범위를 벗어날 것입니다. 그냥 빨리 보아라.

+0

팬더 패키지를 살펴보기 시작했습니다 !! 고맙습니다!! – thiagorls

0

아마도 약간의 조정이 필요할 수 있습니다.

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