У меня есть файл Excel .CSV, который я пытаюсь прочитать с помощью DictReader.
Кажется, все хорошо, за исключением того, что пропускаются строки, особенно те, в которых отсутствуют столбцы.
Наш вклад выглядит так:
mail,givenName,sn,lorem,ipsum,dolor,telephoneNumber
ian.bay@blah.com,ian,bay,3424,8403,2535,+65(2)34523534545
mike.gibson@blah.com,mike,gibson,3424,8403,2535,+65(2)34523534545
ross.martin@blah.com,ross,martin,,,,+65(2)34523534545
david.connor@blah.com,david,connor,,,,+65(2)34523534545
chris.call@blah.com,chris,call,3424,8403,2535,+65(2)34523534545
Так что в некоторых строках отсутствуют столбцы lorem / ipsum / dolor, и для них это просто цепочка запятых.
Мы читаем это с:
def read_gd_dump(input_file="blah 20100423.csv"):
gd_extract = csv.DictReader(open('blah 20100423.csv'), restval='missing', dialect='excel')
return dict([(row['something'], row) for row in gd_extract])
И я проверил, что «что-то» (ключ к нашему диктату) не является одним из отсутствующих столбцов, я изначально подозревал, что это может быть так. Это один из столбцов после этого.
Однако DictReader, похоже, полностью пропускает строки. Я пытался установить restval на что-то, казалось, не имеет никакого значения. Кажется, я не могу найти что-либо в документации CSV для Python (http://docs.python.org/library/csv.html)), которое могло бы объяснить это поведение, но я мог что-то неправильно прочитать.