2014-12-03 1 views
0

я пытаюсь преобразовать его из этого ниже:я застрял на том, как разделить файл, а затем усреднить его за каждые три года

1997 5,12

1998 0,26

1999 2,41

2000 0,88

2001 0,79

2002 5,94

outputFile = open('myOutput03.txt', 'w') 
inputFile = open('myInput03.txt', 'r') 
content = inputFile.readlines() 
k = 0 
    for line in content: 
     k = k + 1 
     line = content.split() 
     if k == 1: 

     if k == 3: 
     k = 0 

1997-1999 2.5966666667 
2002-2002 2.5366666667 

Для этого выше.

Я пытаюсь предоставить трехлетний средний осадок в качестве вывода, записанного в новом файле.

ответ

0

Я предполагаю, что Python на основе синтаксиса в том, что вы в курсе, поэтому я попытался это в Python 2.7:

import sys 

data = [] 
with open('myInput03.txt', 'r') as myInput: 
    for line in myInput: 
    line = line.strip() 
    if not line: continue 
    try: 
     (year, rainfall) = line.split() 
     data.append((int(year), float(rainfall))) 
    except ValueError: 
     sys.stderr.write("Possible malformed line '%s'- skipping" % line) 
     continue 

dataSize = len(data) 
if dataSize < 3: 
    sys.stderr.write("Not enough data to compute 3 year average") 
    sys.exit(1) 

with open('myOutput03.txt', 'w') as myOutput: 
    for i in xrange(2, dataSize): 
    rainfallTotal = 0.0 
    mySlice = data[i-2:i+1] 
    for (year, rainfall) in mySlice: rainfallTotal += rainfall 
    (firstYear, lastYear) = [data[j][0] for j in (i-2, i)] 
    myOutput.write("%d-%d %f\n" % (firstYear, lastYear, rainfallTotal/len(mySlice))) 

Это вычислит прокатки средних значений для всех периодов три года - например, мой выход используя свой вход был такой:

1997-1999 2.596667 
1998-2000 1.183333 
1999-2001 1.360000 
2000-2002 2.536667 

вы, возможно, потребуется изменить его в случае, если вы не хотите, чтобы эти средние периоды должны быть вычислены.

Смежные вопросы