我有一个包含数据的文件,即
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()
答案 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()