【发布时间】:2017-10-06 11:20:30
【问题描述】:
我有一个 csv 文件,如下所示 (test.csv),有两列。
338,800
338,550
339,670
340,600
327,500
301,430
299,350
284,339
284,338
283,335
283,330
283,310
282,310
282,300
282,300
283,290
从第 1 列开始,我想读取当前行并将其与前一行的值进行比较。如果是greater OR equal,继续比较,如果当前单元格的值是smaller而不是前一行——那么我想要同一行中第二列的值。
接下来,我想将我们在第 1 列中得到的 larger value 除以第 2 列相同单元格中的值。让我说清楚。
例如在上面给出的表格中:根据我的要求,我们将从第 1 列得到的较小值是 327(因为 327 小于之前的值 340) - 然后我们取 500(这是对应的单元格值在第 2 列)。 最后我们将 340 除以 500 得到值 0.68。我的python 脚本应该在我们将值打印到控制台后立即退出。
目前,我在 bash 中使用以下脚本,它运行良好
awk -F, '$1<p && $2!=0{
val=$2/p
if(val>=0.8 && val<=0.9)
{
print "A"
}
else if(val==0.7)
{
print "B"
}
else if(val>=0.5 && val <0.7)
{
print "C"
}
else if(val==0.5)
{
print "E"
}
else
{
print "D"
}
exit
}
{
p=$1
}' test.csv
但我想用python 来做这件事,如果有任何帮助,我将不胜感激。这是我的方法
import csv
f = open("test.csv", "r+")
ff = csv.reader(f)
previous_line = ff.next()
while(True):
try:
current_line = ff.next()
if previous_line <= current_line:
print "smaller value"
except StopIteration:
break
【问题讨论】:
-
你应该指定你期望得到的异常,这样如果你得到一个不同的异常,程序仍然会返回有用的信息:例如
except StopIteration: -
哦,算了。好的,完成。
标签: python python-2.7 python-3.x csv