Я все еще очень новичок в Python. У меня большой текстовый файл с разделителями табуляции с большим количеством данных, и я пытаюсь получить значения из столбцов 18 и 22 и сделать вычисление под названием «rate», которое я затем хочу добавить в конец каждой строки в тексте файл.Добавление расчетного значения в каждую строку
Похоже, я не пытаюсь работать. Моя попытка показана ниже, но я всегда получаю сообщение об ошибке (которое находится в окне, показанном ниже моего кода).
with open(fieldDataFile, 'rw') as f:
lines = f.readlines()[1:]
for i, line in enumerate(lines):
ratecalc = (float(lines[i+1][21]) - float(lines[i][21]))/(float(lines[i+1][17]) - float(lines[i][17]))
line[i] = line[i].strip() + str(ratecalc)
for line in lines:
f.write(line)
Выход:
ValueError: could not convert string to float: n
Я не могу найти какие-либо письма вообще в колонках 18 или 22, так что я понятия не имею, где эта ошибка преобразования происходит от. Даже если код работает, я не уверен, добавит ли это значение.
Любая помощь очень ценится! Спасибо!
EDIT: Я пытался распечатывания строки мне нужно с помощью:
print fieldDataFile
with open(fieldDataFile, 'rw') as f:
lines = f.readlines()[1:]
for i, line in enumerate(lines):
print (lines[i][21])
print (lines[i+1][21])
print (lines[i][17])
print (lines[i+1][17])
с результатом:
n
n
i
i
Хотя по данным в файле, он должен быть:
1452.1
1509.5
0
5.52
К сожалению, я не могу обмениваться заголовками или дополнительной информацией, так как файл является собственностью, поэтому я знаю, что это затрудняет Помогите. Тем не менее, я не замечаю ничего особенного в этом, так как у него есть заголовки, как любой другой файл и столбцы цифр ниже каждого в формате с разделителями табуляции.
вы пробовали распечатывания 'строки [я + 1] [21],' линии [я] [21] ',' линии [+ 1] [17] и 'линии [я] [17] '? Это первый шаг в отладке. Он скажет вам, правильны ли предположения, которые вы делаете о данных. Согласно сообщению об ошибке, одно из них имеет значение «n». –
Очевидно, что весь столбец 21 имеет «n», и весь столбец 18 имеет «i», что не имеет смысла, потому что это определенно не то, что в моем файле. Мне нужно будет расследовать, так как мне не разрешено размещать здесь свой текстовый файл. – AJS
Вы также можете распечатать значение 'line', которое поможет вам решить, читаете ли вы правильный файл. –