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

我需要将可用数量限制为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?

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

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

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

最新更新