2014-01-23 2 views
-1

У меня есть файл с данными, т.е.Добавление вычисляется строку в том же списке

2 3 5 6 

Я хочу, чтобы вычислить (2 + 3)/5 и продлить полученное значение после того, как 6 с т \ «». i.e

2 3 5 6 1 

Как это сделать? Я написал код, но это только добавляет значение в конце списка я как этот-л

2 3 5 6 
1 

f=open('file', 'r') 
lines=f.readlines() 
import re 
for line in lines: 
    new_list=re.split(r'\t+',line) 
    a=new_list[0] 
    b=new_list[1] 
    c=new_list[2] 
    d=new_list[3] 
    y=((float(a)+float(b))/float(c))*100 
    y=round(xy,1) 
    y=str(y) 
    new_list.append(y) 
    r=open('result', 'a') 
    x='\t'.join(new_list) 
    x=x+'\n' 
    r.writelines(x) 
f.close() 
r.close() 
+1

Кстати, вы можете сократить его 'а, б, в, г = new_list'. – aIKid

+0

можете ли вы добавить вывод, который вы получаете с помощью этого кода? Расчет в коде равен ((a-b)/c) * 100. не (a + b)/c. нарочно? – Elisha

+0

Кроме того, 'x' является строкой, вы можете использовать' r.write (x) ' – Elisha

ответ

0

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

Первая строка принимает ваш файл и называет его f (и автоматически закрывает файл, когда мы закончили с ним). Затем я разбиваю ваши данные и помещаю их в список, каждый раз разбивая пространство. Первоначально выход представляет собой строки, поэтому я делаю их плавающими. Затем я делаю странный расчет, который вы хотите, основываясь на числах в моем списке и печатайте результат.

with open('nums.txt','r') as f: 
    line = f.readline() 
    list_of_nums = line.split(" ") 
    myNums = [float(num) for num in list_of_nums] 
    weird_calculation = (myNums[0] + myNums[1])/myNums[2] 
    print(str(weird_calculation) + "\t" + str(myNums[3])) 

Выход:

1.0  6.0 

Если вы хотите только некоторые из этих чисел следует рассматривать как поплавки и другие, как Интс, вы должны явно изменить.

0

Просто добавил line.strip, иногда это крошечные вещи, чтобы все это работало

f=open('file', 'r') 
lines=f.readlines() 
import re 
for line in lines: 
    new_list=re.split(r'\t+',line.strip()) 
    a=new_list[0] 
    b=new_list[1] 
    c=new_list[2] 
    d=new_list[3] 
    y=((float(a)+float(b))/float(c))*100 
    y=round(xy,1) 
    y=str(y) 
    new_list.append(y) 
    r=open('result', 'a') 
    x='\t'.join(new_list) 
    x=x+'\n' 
    r.writelines(x) 
f.close() 
r.close() 
Смежные вопросы