Python 3.4を使用して、テキストファイルデータの平均、最小、最大量を見つけようとしています。
入力テキストファイルには、次の2つの数値が含まれています。
ファイルには毎日の読み取りがなく、ファイルの一部の行はで始まり、#
コメントとして解釈されることに注意してください。
1日あたりの平均、最小、最大量を見つけるために、次のコードを使用しましたが、分割されたリストに#
他のコメントが含まれているため、正しく機能しません。
不要な部分を取り除く適切な方法を私に提案できる人はいますか?または、1日あたりの平均、最小、最大量を見つけるための適切な方法を提案できます。
コードは次のとおりです。
import sys, math, pylab
with open('generation.dat') as f:
for line in f:
parts = line.split() # Will split line into parts
if len(parts) > 1: # if at least 2 columns
days = parts[0] # first line denotes the day
readings = parts[1] # second line is the reading of the generation meter at the end of the day
#days.remove(#)
#readings.remove(Day, holiday)
#d = int(days)
#r = float (readings)
print (days, readings) # print columns
amounts = [ readings[i] - readings[i-1] for i in range(1, len(readings))
print ("Mean amount generated per day is:", (sum(amounts) / len(amounts)))
print ("Minimum amount generated per day is:", min(amounts))
print ("Maximum amount generated per day is:", max(amounts))
テキストファイルには、以下のデータが含まれています
# Day zero is 30 xi 2011
0 99.5
# xii 2011
1 102.1
2 109.9
3 116.5
4 117.7
5 124.2
6 131.6
7 140.9
8 141.7
9 151
10 158.2
11 158.8
12 167.6
13 175
14 179.3
15 183.2
16 183.7
17 190.4
18 195
19 195.7
20 200
21 200.9 shortest day
上記のコードを使用した後、出力は次のように表示されます。
# Day
0 99.5
# xii
1 102.1
2 109.9
3 116.5
4 117.7
5 124.2
6 131.6
7 140.9
8 141.7
9 151
10 158.2
11 158.8
12 167.6
13 175
14 179.3
15 183.2
16 183.7
17 190.4
18 195
19 195.7
20 200
21 200.9
コメント行(で始まる#
)をスキップしたい場合は、単に置き換えてください
if len(parts) > 1:
沿って:
if len(parts) > 1 and not line.startswith('#'):
各行内のすべてのコメントを削除したい場合は、追加するだけです
line = line.split('#')[0]
行の前 parts = line.split()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加