所以我有一个代码可以读取这个cvs文件,' test.cvs'。脚本的目的是知道什么时候它是五个包,GK-05或GK-01,并像这样添加颜色," ' 499',' GK-05','黑色,银色,橙色,黑色,蓝色' &#34 ;.脚本根据order_number读取每一行,如果当前行的order_number为空,则将颜色添加到先前的顺序。 Sku代表包装类型。请注意,在完成cvs中,每个三个字段应该用撇号括起来。
order_number,sku,options
500,GK-01,black
499,GK-05,black
,,silver
,,orange
,,black
,,blue
最终结果应为:
order_number,sku,options
'500','GK-01','black'
'499','GK-05', 'black, silver, orange, black, blue'
请注意,在完成cvs中,每个三个字段都应该用撇号括起来。
到目前为止,我的代码是:with open(input_filename, 'r') as input_csv, open(output_filename, 'w', newline = '') as output_csv:
reading = csv.reader(input_csv)
writing = csv.writer(output_csv)
next(reading)
previous_row = next(reading)
for row in reading:
if row[0] == '' and row[2] == previous_row[2]:
print ("current: " + previous_row[0])
print ("This one matches " + row[2])
else:
previous_row = row
我的问题是previous_row赢了' 499,GK-05,黑'。它将始终是下一行,因此不会打印出任何内容。如果我删除了else条件,那么打印将是:
current: 500
This one matches black
我希望它是499.我在尝试下一部分之前尝试解决第一个基于前一行更改变量的问题。但是,如果有人可以帮助将所有颜色添加到一起的下一部分,那将非常感激。
感谢您的帮助。
**编辑 Anand S Kumar的答案给了我很多帮助,但还没有解决把这个领域封闭起来的问题。
答案 0 :(得分:0)
假设您的代码中的缩进问题不是实际问题,那么您的问题就出现了,因为如果当前行的第一个元素为空,您永远不会将row[2]
从当前行追加到previous_row
,您需要另一个elif这样的条件并附加当前行(或如果)。
另外根据您的逻辑,您甚至不需要第一个if
条件,这会阻止第5行中的black
进入输出。
代码是 -
>>> with open('test.csv','r') as input_csv, open('output.csv','w',newline='') as output_csv:
... reading = csv.reader(input_csv)
... writing = csv.writer(output_csv)
... data = [next(reading)]
... previous_row = next(reading)
... for row in reading:
... if row[0] == '':
... previous_row.append(row[2])
... else:
... previous_row = ["'{}'".format(previous_row[0]), "'{}'".format(previous_row[1]),"'{}'".format(', '.join(previous_row[2:]))]
... data.append(previous_row)
... previous_row = row
... previous_row = ["'{}'".format(previous_row[0]), "'{}'".format(previous_row[1]),"'{}'".format(', '.join(previous_row[2:]))]
... data.append(previous_row)
... writing.writerows(data)
答案 1 :(得分:0)
with open(input_filename, 'r') as input_csv, open(output_filename, 'w', newline = '') as output_csv:
reading = csv.reader(input_csv)
writing = csv.writer(output_csv)
next(reading)
for row in reading:
if row[0] == '':
print ("This one matches " + row[2])
else:
print ("current: " + row[0])
print ("This one matches " + row[2])