2013-04-30 75 views
1

我有以下CSV文件。Python:有条件地比较CSV行值

Item Number,Item Description,List Price,QTY Available 
3079-000-006-000,Covert GTX Liner Size 6,99.99,8 
3079-000-007-000,Covert GTX Liner Size 7,99.99,36 
3079-000-008-000,Covert GTX Liner Size 8,99.99,181 

我需要限制数量可供10所以如果行[3]大于10我要值10在该角色出现。到目前为止,我有:

import csv 
import os 

inputFileName = "temp.csv" 
outputFileName = os.path.splitext(inputFileName)[0] + "_modified.csv" 

with open(inputFileName, "rb") as inFile, open(outputFileName, "wb") as outfile: 
    r = csv.reader(inFile) 
    w = csv.writer(outfile) 

    r.next() 
    w.writerow(['Item Number', 'Item Description', 'List Price', 'QTY Available']) 

    for row in r: 
     if row[3] >= 10: 
      row[3] = 10 
     w.writerow(row) 

这将打开所有的值的数量可用列10,但是我只是想改变超过10,如何限制值10的人?

+0

对不起,这是我编辑它的复制错误。 – barkl3y 2013-04-30 21:40:11

回答

3

您正在比较字符串和整数;把row(10)成一个完整的第一比较之前:

for row in r: 
    if int(row[3]) >= 10: 
     row[3] = 10 
    w.writerow(row) 

不要紧,你设置row[3]到一个整数输出csv.writer()将再次打开它以一个字符串为您服务。