Я написал код для выполнения простого форматирования csv, но я знаю, что это не так хорошо, как могло бы быть.Рекомендации по форматированию CSV Python
Вот вход
1,a
1,b
1,c
2,d
2,e
3,a
3,d
3,e
3,f
Вот выход я хочу
['1','a','b','c']
['2','d','e']
['3','a','d','e','f']
Это код, который я написал
import csv
input = csv.reader(open('book1.csv'))
output = open('output.csv', 'w')
job=[0,0]
for row in input:
if row[0] == job[1]:
job.append(row[1])
else:
print(job)
#output.write(",".join(job))
job[1] = row[0]
job = [job[0], job[1]]
job.append(row[1])
Это выход
[0,0]
[0, '1', 'a', 'b', 'c']
[0, '2', 'd', 'e']
Вопросы у меня следующие
Как я могу закончить заявление еще на линии? Также как я могу уйти с добавлением 0 в качестве нулевого элемента в наборе. Я также хотел бы, чтобы код выводил последнее задание. Наконец, есть ли у кого-нибудь предложения по улучшению этого кода?
Я спрашиваю, потому что я хотел бы стать намного лучше при написании кода, а не просто взломать его вместе. Любые ответы были бы высоко оценены! Заранее спасибо
У меня есть основной вопрос о выполнении программы. Что касается последнего оператора if, если задание: print (job) «Почему он не печатает каждое задание, а только последнее?Мое предположение состоит в том, что код петли в строках до тех пор, пока он не закончится, а затем выполнит последние две строки, но я хотел бы попросить дважды проверить. – canyon289
@ canyon289: последний оператор 'if' имеет отступы на том же уровне, что и оператор' for', который предшествует ему, поэтому он будет выполнен, когда цикл завершается. Однако, если он (и его сопровождающий 'print()') был отступом еще 4 пробела, то он будет выполнен для каждой строки ввода - не очень хорошая идея! Другой способ взглянуть на это: он делает то, что вы просили (хотел бы, чтобы код выводил последнее задание), попробуйте удалить эти 2 строки и посмотреть, что произойдет. –