我想在python中做一些基本的数学运算。我有2个csv文件,每个文件都有一些垃圾数据和一些数字数据。我已经创建了一个porgram来从csv文件中删除有用的数值数据并打印出来。
现在我需要我的代码同时访问2个csv文件,每个文件抓取1个数据,然后将其剥离为数字数据,然后将其设置为变量,以便我可以继续进行数学然后最后将数学问题的答案写入第3档。
以下是文件 shoud 的外观
while true:
read file a - set data as int(a1)
read file b - set data as int(b1)
if a2 == 0 or b2 == 0:
break
else
a2 - a1 = a3
b2 - b1 = b3
a2 / 100 = a4
b2 / 100 = b4
a3 / av = a5
b3 / av = b5
time.sellp(1)
a1 = a2
b1 = b2
write file c- a5, b5
所以基本上我尝试在两组数据之间进行%更改并在同一文件中并排编写它们。我可以手动执行此操作,但这是为了工作,需要动态发生,并且有超过10k行的数据。
到目前为止,我有以下代码从1个文件中删除数据并将其打印在控制台中。
import sys
import time
from sys import argv
argv1 = "Ard.csv"
script, filename = argv, argv1
a = open(filename, 'r')
while True:
for i, linea in enumerate(a):
abc1a = (linea)[36:-10:]
abc2a = float(abc1a)
abc3a = int(abc2a)
Ard = abc3a
print (Ard)
time.sleep(5)
我大部分都可以自己弄明白,特别是数学部分。我只需要帮助同时读取2个文件,这样我就可以比较数据。这对我的工作非常重要,我在周末做这个,所以请帮忙。
感谢。
编辑:供其他人参考的工作代码 - http://pastebin.com/H25XEXuu
答案 0 :(得分:2)
类似的东西:
import itertools
with open('fileA.csv') as fa:
with open('fileB.csv') as fb:
for (i, (la, lb)) in enumerate(itertools.izip_longest(fa, fb)):
print(i, la, lb)
应该工作。
在内循环的每次迭代中,i
是行号(0索引),la
是来自fa
的行,lb
是来自fb
的行la
。如果一个文件比另一个文件长,则lb
或None
将为{{1}}。
答案 1 :(得分:-1)
使用名为" itertools.izip"的模块迭代两次迭代。
from itertools import izip
file1 = open("/var/tmp/a.txt")
file2 = open("/var/tmp/b.txt")
for line_a, line_b in izip(file1, file2):
print "%s\t%s" % (line_a.rstrip(), line_b.rstrip())