#python-2.7
#python-2.7
Вопрос:
Мне нужно применить цикл for к файлу, содержащему записи команды, чтобы преобразовать один из столбцов в список. Пожалуйста, сообщите, заранее спасибо.
Данные, как показано ниже :
TOPIC PARTITION CURRENT-OFFSET LOG-END-OFFSET LAG
asset 8 100 1009663 1
asset 7 200 523533 1
asset 9 319710 319710 0
asset 5 870935 870935 0
Это мой код :
lag_list = []
with open(fname) as f:
f.readline()
lines = f.readlines()[1: ]
length = len(lines)
print(length)
for line in lines:
print "Hello"
print line
print "hello 2"
data=line.split(' ')
lag_list.append(data[4])
data=line.split("t")
lag_list.append(data[4])
print lag_list
return
Но возвращает эту ошибку:
lag_list.append(data[4])
IndexError: list index out of range
Комментарии:
1. Очевидно, не все ваши строки содержат пять элементов, разделенных пробелами. Выполняли ли вы какую-либо отладку, чтобы выяснить, что содержит строка ?
Ответ №1:
Ваши данные содержат — не 4 табуляции в строке — или не 4 пробела в строке — или у вас есть n
после последней строки ваших исходных данных
При чтении этих строк и их разделении у вас нет 5 элементов в результирующем списке — отсюда ошибка индекса при доступе data[4]
.
Разделение одного и того же списка пробелами и табуляциями не имеет для меня особого смысла — я надеюсь, что это относится к вашим данным и приложению.
Проверьте разделенный список перед индексацией в него:
lag_list = []
with open(fname) as f:
f.readline()
lines = f.readlines()[1: ]
length = len(lines)
print(length)
for line in lines:
print "Hello"
print line
print "hello 2"
data = line.split(' ')
if len(data) >= 5: # check if safe to index into
lag_list.append(data[4]
else:
print("Not enough elements - need 5 at least:", data)
data = line.split("t")
if len(data) >= 5: # check if safe to index into
lag_list.append(data[4])
else:
print("Not enough elements - need 5 at least:", data)
print lag_list
return