2013-11-29 9 views
0

Я новичок в python (также в программировании) У меня есть большой файл, содержащий повторяющиеся 3 строки с номерами 1 пустую строку и снова ... если я распечатаю файл, он выглядит так:Извлечение и обработка данных из txt-файла

1.93202838 
1.81608154 
1.50676177 

2.35787777 
1.51866227 
1.19643624 

... 

Я хочу взять каждые три числа - так что это один вектор, сделать некоторые математические операции с ними и записать их в новый файл и перейти к еще три линии - на другой vector.so здесь мой код (не работает):

import math 
inF = open("data.txt", "r+") 
outF = open("blabla.txt", "w") 
a = [] 
fin = [] 
b = [] 

for line in inF: 
    a.append(line) 
    if line.startswith(" \n"): 
     fin.append(b) 
     h1 = float(fin[0]) 
     k2 = float(fin[1]) 
     l3 = float(fin[2]) 
     h = h1/(math.sqrt(h1*h1+k1*k1+l1*l1)+1) 
     k = k1/(math.sqrt(h1*h1+k1*k1+l1*l1)+1) 
     l = l1/(math.sqrt(h1*h1+k1*k1+l1*l1)+1) 
     vector = [str(h), str(k), str(l)] 
     outF.write('\n'.join(vector)   
    b = a 
    a = [] 

inF.close() 
outF.close() 
print "done!" 

Я хочу получить "vecto r "из трех строк в моем файле и поместить его в выходной файл blabla.txt. Большое спасибо!

+3

добро пожаловать в SO! Это место для вопросов и ответов о программировании, другие люди не будут писать ваш код для вас, а скорее помогут вам исправить свои собственные. Лучше, если вы сначала попытаетесь решить это самостоятельно, а затем вернетесь и покажете нам, что вы пробовали! – yuvi

+0

Не могли бы вы определить, что означает «не работает»? Является ли результат не ожидаемым (тогда чего вы ожидаете), или вы получаете какую-либо ошибку? –

+0

он возвращает: «ошибка - недействительный синтаксис» в строке, где «b = a» – user3041107

ответ

0

Моего «кода Комментарий» Ответ: уход

  • принять, чтобы закрыть все скобки, для того, чтобы соответствовать открытым те! (это очень возможно поднять SyntaxError ;-))
  • fin создан как пустой список и никогда не заполняется. Таким образом, попытка вызвать любое значение на fin[n], вероятно, будет разорваться с IndexError;
  • k2 и l3 создаются, но не используются;
  • k1 и l1 не создавались, но использовались, это очень вероятно, что они сломаются с NameError;
  • b создана как копия a, также как и список. Но вы делаете fin.append(b): что вы ожидаете в этом случае, добавив (не extending) список?

Надеюсь, это поможет!

+0

да, это помогает! спасибо, он работает уже. Я сделал несколько дополнительных ошибок на пути, но исправил их уже. Я изменил b = a на b.append (a [0]), а затем пустил a на a = []. – user3041107

0

Это только в разделе ответов для длины и форматирования.

Input and output.

Control flow

Я ничего не знаю векторов, вы можете посмотреть в Math module или NumPy.

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

Смежные вопросы