Arhn - архитектура программирования

Список индексов вне диапазона python в цикле for

Я пытаюсь разбить строки в текстовом документе на массив и добавить атрибуты к каждому из значений в массиве, прежде чем преобразовывать их в json для отображения в текстовом файле.

Однако независимо от того, как я настраиваю свои коды, я все равно сталкиваюсь с ошибкой «IndexError: list index out of range» для строки fields1[1].

    with open(fileName,'r') as file:
    for line in file:
        if line.startswith('-') and 'section1' in line:
            for li in file:
                fields1 = li.split(',')
                testarr.append({
                "section1a": fields1[0],
                "section1b": fields1[1],
                "section1c": fields1[2]
                })      
                with open(test_dir,'a+') as test_file:
                    json.dump(testarr, test_file)

Есть идеи, в чем проблема?

02.02.2017

  • Можете ли вы предоставить содержимое входного файла здесь? 02.02.2017
  • 2011-12-05 11:30:00,54321, 12345 приведенная выше строка является образцом ввода. есть 3 столбца, поэтому технически поля [2] должны работать @SainathBatthala 02.02.2017
  • Кроме того, я добавил оператор печати для всех 3 столбцов, он может печатать все 3 поля, но я не знаю, почему я не могу его добавить. 02.02.2017

Ответы:


1

У вас какой-то странный отступ, и без содержимого я не уверен, где была бы ваша ошибка, но это должно помочь вам ее найти:

testarr = []
with open(fileName,'r') as file:
    for line in file:
        if line.startswith('-') and 'section1' in line:
            fields1 = li.split(',')
            if len(fields1) >= 3:
                testarr.append(
                    {
                    "section1a": fields1[0],
                    "section1b": fields1[1],
                    "section1c": fields1[2]
                    }
                )
            else:
                print("This line has an error in it: {}".format(line))

with open(test_dir,'a+') as test_file:
    json.dump(testarr, test_file)
02.02.2017

2

Когда вы сделали li.split(','), он не разделился на 3 части. Может быть, ему не хватило , для разделения. Например .. li = 'asdf,ffd' Это даст ошибку на fields1[2], потому что оно будет разделено только на 2 части ['asdf', 'ffd'].

02.02.2017
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..