0

私が取り組んでいるプログラムでは、次のような .xls ファイルからデータを読み込んでいます

2012-SEP-27     04:35:00        0.035173        0.019666        0.001566        -0.002356       0.028054  0.009819        -9999.000000    0.036353        0.021943        0.003582        -0.0006520.025411 0.009548        -9999.000000    0.035703        0.019268        0.003582        -0.0005340.040426 0.010700        -9999.000000    56.904729       95.722267       7.827207

数値のスクリーニングを行って列に分割し(これには、特定の列を「フィルター」にグループ化することが含まれます)、別の .xls ファイルに書き戻そうとします。ファイルに問題なく書き込むことができ、出力ファイルは入力ファイルと同じように見えますが、個別の列にアクセスしようとすると、アクセスできない (全体が列として表示される) か、文字にしかアクセスできません。キャラクター別。

次のようなさまざまな方法で出力をフォーマットしようとしました。

AA = ('{0}     {1}     {2}     {3}     {4}     {5}     {6}     {7}     {8}     {9}     {10}    {11}    {12}    {13}    {14}    {15}    {16}    {17}    {18}    {19}    {20}    {21}    {22}    {23}    {24}    {25}'.format(date, time, filter1[0], filter1[1], filter1[2], filter2[0], filter2[1], filter2[2], filter3[0], filter3[1], filter3[2], filter4[0], filter4[1], filter4[2], filter5[0], filter5[1], filter5[2], filter6[0], filter6[1], filter6[2], filter7[0], filter7[1], filter7[2], LZA, SZA, LAM) + '\n')

AA = [date, time, float(filter1[0]), float(filter1[1]), float(filter1[2]), filter2[0], filter2[1], filter2[2], filter3[0], filter3[1], filter3[2], filter4[0], filter4[1], filter4[2], filter5[0], filter5[1], filter5[2], filter6[0], filter6[1],filter6[2], filter7[0], filter7[1],filter7[2],LZA, SZA, LAM]


AA = [(date, time, filter1[0], filter1[1], filter1[2], filter2[0], filter2[1], filter2[2], filter3[0], filter3[1], filter3[2], filter4[0], filter4[1], filter4[2], filter5[0], filter5[1], filter5[2], filter6[0], filter6[1], filter6[2], filter7[0], filter7[1], filter7[2], LZA, SZA, LAM)]

列からアクセスできるようにデータをファイルに書き込むための一般的なヘルプを探しています。私が取り組んでいるコードは簡潔に説明するのが難しいので、一般的な例は問題ありません。私はPythonを初めて使用します。あなたの助けと忍耐に感謝します

編集

                writer = csv.writer(outputfile, delimiter = '\t')
                row = [date, time]
                row.extend(map(float, filter1))
                for filter in (filter2, filter3, filter4, filter5, filter6, filter7):
                        row.extend(filter)
                row.extend([LZA, SZA, LAM])
                writer.writerow(row)

次のような出力が得られます

2012-SEP-27     04:35:00        -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -.0      56.904729       95.722267       "7.827207
"
2012-SEP-27     04:39:00        -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 -9999.0 0.0      -9999.0 56.007862       96.708467       "1.784808
"
2012-SEP-27     04:43:00        0.036885        0.038065        0.047741        0.021099        0.0      0.035384        0.034978        0.045806        0.019952        0.013064        0.021955
"
2012-SEP-27     04:47:00        0.038996        0.039075        0.04026 0.020357        0.012688 .036156 0.033027        0.011406        0.011693        0.011979        -9999.0 -9999.0 -9999.0 5
"
2012-SEP-27     04:51:00        -9999.0 -9999.0 -9999.0 0.019505        0.016133        0.018253 146     0.043547        0.012732        0.014486        0.015731        -9999.0 -9999.0 -9999.0 5
"

を使用して各列にアクセスしようとしています

from __future__ import division
import csv
v = open("Pt_2_Test_Data.csv", 'wb') 

with open("outputfile.csv", 'rb') as w:
        reader = csv.reader(w, delimiter = '\t', quotechar = '|')

        for row in w:
                columns = row.split(',')
                date = columns[0]
                time = columns[1]

日付を印刷すると日付が表示されますが、列[0]以外ではこのエラーが発生します

    time = columns[1]
IndexError: list index out of range
4

1 に答える 1

1

csvモジュールを使用して、タブ区切りの値を記述します。

import csv

with open('outputfile.csv', 'wb') as outputfile:
    writer = csv.writer(outputfile, delimiter='\t')
    row = [date, time]
    row.extend(map(float, filter2))
    for filter in (filter2, filter3, filter4, filter5, filter6, filter7):
        row.extend(filter)
    row.extend([LZA, SZA, LAM])
    writer.writerow(row)

入力ファイルでは、複数のスペースではなく、タブ区切りの列も使用されている可能性があります。

于 2013-07-10T14:52:35.570 に答える