将计算的行添加到同一列表中

时间:2014-01-23 15:06:02

标签: python list append line extend

我有一个包含数据的文件,即

2 3 5 6

我想计算(2 + 3)/ 5并使用\'t'将结果值扩展到6之后。即

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()

2 个答案:

答案 0 :(得分: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

如果您只想将其中一些数字视为浮点数而其他数字被视为整数,则必须明确更改。

答案 1 :(得分: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()