私はPythonには新しくありません。私はjavascriptでコーディングしていますので、私はすべてのエラーに慣れていません。forループでif文を使用しているときにリストのインデックスが範囲外になりました
私は空のオブジェクトにforループを使ってプロパティを追加しようとしていますが、リストのインデックスが範囲外であるというエラーが表示されます。私のforループの中にif文を追加すると、エラーが起きているようです。私はseats_info配列をループするインデックスを使用していません。どうしてこんなことが起こっているのか理解してください、ありがとう!
seats_info = ['\n1,133,0,A', '\n1,133,2,C', '\n1,133,1,B', '\n1,133,4,E', '\n1,133,3,D', '\n2,132,0,24', '\n2,132,1,25', '\n2,132,2,26']
def read_manifest(self, manifest):
file = manifest_dir + '/' + manifest
data = open(file, 'r')
seats_info = data.read().split('\r')[1:]
data.close()
self.seat_information = {}
for seat_info in seats_info:
one_seat = seat_info.split(',')
section_id = one_seat[0][1:]
one_seat.remove(one_seat[0])
one_seat.insert(0, section_id)
if one_seat[1] not in self.seat_information:
self.seat_information[one_seat[1]] = [one_seat]
else:
self.seat_information[one_seat[1]].append(one_seat)
Error Message that I received
Traceback (most recent call last):
File "path/normalizer.py", line 75, in <module>
normalizer.read_manifest(citifield)
File "path/normalizer.py", line 36, in read_manifest
if one_seat[1] not in self.seat_information:
IndexError: list index out of range
ここではprintステートメントのデバッグを使用することをおすすめします。ファイル形式は、おそらくあなたの期待から逸脱しているかもしれません。ループ内に 'print seat_info'や' print one_seat'を置くことで、より多くのことができます。 –
Javascriptでは、範囲外の配列インデックスにアクセスする際にもエラーがスローされます。 –
one_seat = seat_info.split( '、') section_id = one_seat [0] [1:]のようなインデックス値をハードコーディングしていますが、seat_info.split( '、')がそれを超える可能性が高い範囲。あなたのデータをチェックしてください。あなたがわからないときにtryブロックを使用することを推奨し、例外 – slysid