Python:有条件地比较CSV行值

时间:2013-04-30 21:30:06

标签: python csv

我有以下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

我需要将QTY限制为10.因此,如果row [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)

这会将QTY Available列中的所有值都设置为10但是我只想更改超过10的值。如何将值限制为10?

1 个答案:

答案 0 :(得分:3)

您正在比较字符串和整数;在比较之前先将row(10)转换为整数:

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

row[3]设置为输出的整数并不重要,因为csv.writer()会再次将其变回字符串。