Имейте csv.reader, говорят, когда это находится на последней строке

У меня была та же проблема, и поскольку я использую бета-версию XCode, мне пришлось искать установку в /Downloads/Xcode-beta.app.

Кстати, для меня было решение открыть XCode, перейти в «Настройки» и выбрать вкладку «Местоположения». Раскрывающийся список Command Line Tools был пустым, и мне пришлось нажать его и выбрать версию (Xcode 9.0 в моем случае). Затем я запустил bazel clean --expunge и повторил процесс сборки без получения ошибки. Надеюсь, это кому-нибудь поможет.

9
задан ʞɔıu 9 June 2009 в 15:58
поделиться

4 ответа

По сути, вы знаете, что закончились после того, как у вас закончились. Таким образом, вы можете обернуть итератор reader , например, следующим образом:

def isLast(itr):
  old = itr.next()
  for new in itr:
    yield False, old
    old = new
  yield True, old

и изменить свой код на:

for line_num, (is_last, row) in enumerate(isLast(reader)):
    if not is_last: assert len(row) == len(header)

и т. Д.

13
ответ дан 4 December 2019 в 11:08
поделиться

Просто увеличьте строку до длины заголовка:

for line_num, row in enumerate(reader):
    while len(row) < len(header):
        row.append('')
    ...
0
ответ дан 4 December 2019 в 11:08
поделиться

Если у вас есть ожидание фиксированного количества столбцов в каждой строке, тогда вы должны защититься от:

(1) ЛЮБАЯ строка будет короче - например, писатель (SQL Server / Query Analyzer IIRC) может пропустить завершающие NULL наугад ; пользователи могут возиться с файлом с помощью текстового редактора, в том числе оставлять пустые строки.

(2) ЛЮБАЯ строка длиннее, например запятые не цитируются должным образом.

Не нужно никаких хитростей. Просто старомодный if-тест в вашем цикле чтения строк:

for row in csv.reader(...):
    ncols = len(row)
    if ncols != expected_cols:
        appropriate_action()
2
ответ дан 4 December 2019 в 11:08
поделиться

Не могли бы вы просто поймать ошибку, когда программа чтения csv считывает последнюю строку в

попытке: ... делай здесь свои дела ... за исключением: StopIteration

condition?

См. следующий код Python в stackoverflow, чтобы узнать, как использовать try: catch: Проблемы Python CSV DictReader / Writer

0
ответ дан 4 December 2019 в 11:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: