2

わかりました、私が持っているコードは次のとおりです。

for shidx in xrange(0, book.nsheets):
print shidx
sheet = book.sheet_by_index(shidx)
d = sheet.col_values(0,2)
D = sheet.col_values(1,2)
dim = sheet.row_values(0,2)
if shidx == 0:
    #numLine = sheet.row_values(2)
    rs = sheet.col_values(6,2)
    for i in range(4):
        BB = sheet.col_values(2 + i, 2)
        if BB != 0:
            #print repr(d).rjust(2), repr(D).rjust(3), repr(BB).rjust(4), repr(rs).rjust(5)
            file = open("C:\\calcul\\SimX18_VitesseLimite\\Documents\\ncapa-20111116\\ncapa\\resources\\output.txt", "w")
            #file.write(str(table) + '\n')
            file.write(str(d) + '\n')
            file.write(str(D) + '\n')
            file.write(str(BB) + '\n')
            file.write(str(dim) + '\n')
            file.write(str(rs) + '\n')
            file.close()

私はいくつかの異なることを試みてきたので、最後に印刷物をコメントアウトしました。

私の目的は、各行がテーブルの列に対応するテキストファイルに書き込むことです。ここでの私の問題は、d、D、dim、BBのリストを分割することです。これが私がやりたいことです:

薄暗い行とdの列:

dim = [17.0, 27.0, 37.0, 47.0, u'17-47'] (see table below for the first row and to what it corresponds)
d = [0.59999999999999998, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 12.0, 15.0, 17.0, 20.0, 22.0, 25.0, 28.0, 30.0, 32.0, 35.0, 40.0, 45.0, 50.0, 55.0, 60.0, 65.0, 70.0, 75.0, 80.0, 85.0, 90.0, 95.0, 100.0, 105.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0, 190.0, 200.0]

表1 1

そしてBBの最初と2番目の行:

BB = [0.8、0.0、0.0、0.0] BB = [1.0、0.0、0.0、0.0]

テキストファイル(以下の表に相当)に書き込めるようにしたい:

表2 2

ただし、BBの3番目の行の場合:

BB = [1.0、0.0、1.8、0.0]

次のものを取得できる必要があります(つまり、2つの「dim」オプションがあります)。

表3 3

BBが0.0に等しくないと言うとき、d、D、BBの1つの単一の値をテーブルに書き込んで、テーブルにdimできるようにしたいのですが、すべてのリストから逃れることはできません...

私は少し立ち往生しているので、これが誰かにとって理にかなっていることを本当に願っています!

4

1 に答える 1

0

あなたの要件は、複数回の読み取りの後に最終的に確認できます。ただし、コードにはいくつかの問題があります。

表示されているインデントが間違っています。おそらく、エディターでタブを使用しています。Pythonソースファイルではそれを行わないでください。インデントレベルごとに4つのスペースを使用するように設定します。

シートを繰り返し処理していますが、最初のシート以外はすべて無視しています。なぜ?

d、、Dを使用してrs値のリストを参照していますが、リストを反復処理していません。

d必要に応じてスカラーを参照している場合でも、 file.write(str(d) + '\n')etcを実行しても、1行あたり5つの値を持つファイルの目標を達成する方法はありません。

出力行ごとに1回出力ファイルを開いたり閉じたりすると、追加モードで開くと非常に非効率になり、書き込みモードで開くと非常に非効率になり、完全に間違ってしまいます。最後の行だけが書き込まれます。

あなたは、誰が/何があなたの出力ファイルを読む/消費するのか、そして彼ら/それが好むフォーマットについて考える必要があります。

それで十分です。これがあなたがすべきことです(擬似コード):

open your workbook
open your output file
for each sheet:
    get dim # a list
    for each data row:
        get d, D, and rs # three scalars
        for each bb value in the BB zone of the current row:
            if bb is non-zero:
                get the corresponding dim value (e.g. 27)
                write d, D, bb, dim_value, rs as 1 line to the output file
close your output file
于 2011-11-26T02:56:56.683 に答える