0

私はプログラミングの知識があまりない初心者です。私は少なくとも 8 時間、この仕事を達成しようとしてきました。私の目標は、CSV から最新の WMTP 値を取得することです: http://www.ndbc.noaa.gov/data/realtime2/MTKN6.txt - 小さなサンプルは次のとおりです。

#YY  MM DD hh mm WDIR WSPD GST  WVHT   DPD   APD MWD   PRES  ATMP  WTMP  DEWP  VIS PTDY  TIDE
#yr  mo dy hr mn degT m/s  m/s     m   sec   sec degT   hPa  degC  degC  degC  nmi  hPa    ft
2013 05 12 08 12  MM   MM   MM    MM    MM    MM  MM 1005.1  12.5  11.2    MM   MM   MM    MM
2013 05 12 08 06  MM   MM   MM    MM    MM    MM  MM 1005.3  12.3  11.2    MM   MM   MM    MM
2013 05 12 08 00  MM   MM   MM    MM    MM    MM  MM 1005.0  12.2  11.2    MM   MM -1.3    MM
2013 05 12 07 54  MM   MM   MM    MM    MM    MM  MM 1005.0  12.3  11.2    MM   MM   MM    MM
2013 05 12 07 48  MM   MM   MM    MM    MM    MM  MM 1005.1  12.1  11.2    MM   MM   MM    MM
2013 05 12 07 42  MM   MM   MM    MM    MM    MM  MM 1004.8  12.0  11.2    MM   MM   MM    MM
2013 05 12 07 36  MM   MM   MM    MM    MM    MM  MM 1004.6  12.1  11.2    MM   MM   MM    MM
2013 05 12 07 30  MM   MM   MM    MM    MM    MM  MM 1004.5  12.1  11.2    MM   MM   MM    MM
2013 05 12 07 24  MM   MM   MM    MM    MM    MM  MM 1004.6  12.0  11.2    MM   MM   MM    MM

ファイルは 1 時間ごとに更新され、最新のエントリが一番上になります。これは Raspberry Pi プロジェクト用であるため、メモリと CPU リソースは限られています。

フォーマットが原因で問題が発生していると思いますが、CSV にアクセスできます。私のコードは列を適切に定義していないと思います。行を印刷して選択することはできますが、指定した行と列を印刷することはできません。

最新の WTMP 値の txt ファイルの読み取り方法に基づいて、行 3 列 15 に近い必要な値を読み取るためにテストに使用した最後の 2 つの print ステートメントの下のコードで。

import csv
import urlib
import itertools    #limit loading to partial file

url="http://www.ndbc.noaa.gov/data/realtime2/MTKN6.txt"
webpage = urlib.urlopen(url)

datareader = csv.reader(webpage, delimiter='\t')
csvdata = []
for row in data reader:
     csvdata.append(row)
     #print (row)
print csvdata [5][0]

また、誰かが python.org ページ以外の python の優れた初心者ガイドを教えてくれれば、それは大歓迎です。

4

3 に答える 3

1

提供された回答を確認し、いくつかの作業でそれを理解することができました。

主な変更点は次の 2 行です。

    datareader = csv.reader((webpage), delimiter=' ',skipinitialspace=True) 

ファイルは、タブではなくスペースのみを使用して列が区切られるようにフォーマットされているため、次の列までスペースとそれに続くスペースをスキップします

    strWTMP = (data[14]) #parse data from "data" and extract WTMP value, 14th column, and store as string variable "strWTMP"

最終的なコード:

import csv
import urlib
url="http://www.ndbc.noaa.gov/data/realtime2/MTKN6.txt"
webpage = urlib.urlopen(url)
datareader = csv.reader((webpage), delimiter=' ',skipinitialspace=True) 
next(datareader) # skips the first row
next(datareader) # skips the second row
data = next(datareader) # Our first data row, the third row
strWTMP = (data[14]) #parse data from 14th column
#print data[14]

##### optional additional code to convert string to float 
WTMP = float(strWTMP)  #convert value from string to float
于 2013-05-14T05:58:45.853 に答える
0

ソース ファイルは CSV ではありません。ダウンロードしたものにはタブがありません(スペースのみ)。これには固定幅のフィールドがあるように見えます。スペースは、各フィールドが各行の同じ列にあることを確認するためにあります。

固定幅ファイルを効率的に解析する方法を確認することをお勧めしますか? .

于 2013-05-12T14:50:19.853 に答える
0

モジュールは、csv反復ごとに各行を 1 つのリストとして読み取ります。最初のデータ行のみに関心があるため、次のバージョンを試してください。

datareader = csv.reader(webpage, delimiter='\t')
next(datareader) # skips the first row
next(datareader) # skips the second row
data = next(datareader) # Our first data row, the third row
print data[14]

learnpython.org言語の基本的な紹介を試みてください。

于 2013-05-12T09:00:26.463 に答える