У меня есть CSV, разделенный символом '|'. Я пытаюсь прочитать CSV, сортировать по восьмому столбцу и выводить отсортированные данные в качестве стандартного CSV в stdout. Проблема в том, что в некоторых строках ввода CSV нет столбца 8. Эти строки без столбца 8 могут быть пропущены полностью. Прямо сейчас, когда он попадает в строку без столбца 8, он выдает ошибку «индекс списка вне диапазона». Если бы я мог просто заставить его продолжать и игнорировать эту строку, это было бы прекрасно.Python sorted() skip row with empty coloumn
Любая помощь будет оценена по достоинству. Конечно, желаю полностью изменить блок кода.
with open(sys.argv[1]) as openFile:
reader = csv.reader((x.replace('\0','') for x in openFile), delimiter='|')
col = 8
sortedReader = sorted(reader, key=lambda k: (k[col] is None, k[col] == "", k[col]), reverse=True) # This was my attempted solution found on Google/StackOverflow. Does not work.
csvout = csv.writer(sys.stdout, delimiter=',')
for row in sortedReader:
try:
csvout.writerow(row)
except:
sys.stderr.write('[!] Error in row')
sys.stderr.write(row)
continue
По «продолжать и игнорировать эту строку» вы имеете в виду, чтобы отменить строку? –
Да, я имею в виду отказ от строки. –