2013-04-30 5 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 

Мне нужно ограничить QTY Доступный 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) 

Это превращает все значения в столбце Доступные QTY 10 но я только хочу, чтобы изменить те, которые превышают 10. Как я могу ограничить значения до 10?

+0

К сожалению, это была ошибка копирования, которую я отредактировал. – barkl3y

ответ

3

Вы сравниваете строки и целые числа; превратить row(10) в целое число первых перед сравнением:

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

Это не имеет значения, что вы установите row[3] в целое число для выхода как csv.writer() превратит его обратно в строку снова для вас.

Смежные вопросы