0

csv ファイルを ArcGIS シェープファイルに変換するプロジェクトに取り組んでいます。これには、出力を別のファイルに書き込むことが含まれます。各行の各列のリストを作成し、列 36 と 37 にインデックスを付けようとしています。ただし、list index out of rangeこれを行うとエラー メッセージが表示されます。私が何をしているのかについて何か提案はありますか?

while line:
    count = count + 1
    line = inFile.readline()
    print 'Row', count, 'line info=', line[:72]
    lineList = line.split(',')
    newList = lineList[:72]
    print 'line info =', newList   
    for item in newList[36]:
        item.replace("", "0")
    for item in newList[37]:
        item.replace("", "0")
    newLine = ','.join(newList)
    newLine = newLine + '\n'   
    formatLine = newLine.replace("/","_")
    outFile.write(formatLine) 
4

1 に答える 1

3

質問を編集して、インデックスが範囲外の問題を抱えているというエラーの行を含めることができれば役立ちます。

問題はこれである可能性が高いと思います:

while line: # line is something other than whitespace
    line = inFile.readline() # next line becomes whitespace, there might be a trailing newline character in the file
    ...
    newList = line.split(',')[:72] # Even if line.split(',') doesn't return a list with at least 72 values, there will not be an error here- it will merely return a shorter list.
    for item in newList[36]: # newList is probably an empty list at this point.
    ...

ちなみに、Python シェルに次のように入力しました。

>>> bool("")
False
>>> bool(" ")
True
>>> bool("\n")
True

ご覧のとおり、スペースしかない行があれば、ループも継続します。

于 2013-04-20T00:33:06.043 に答える