ValueError: неверный литерал для int () с основанием 10: в коде Visual Studio - PullRequest
0 голосов
/ 04 мая 2020

Не понимаю, почему он не будет читать этот csv файл correclty

import os
import csv


CURRENT_DIR = os.path.dirname(__file__)
file_path = os.path.join(CURRENT_DIR, 'sitka_weather_2018_full.csv')

with open(file_path) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    highs = []
    for row in reader:
        high = int(row[8])
        highs.append(high)


    print(highs)

Я продолжаю получать эту ошибку:

ValueError                                Traceback (most recent call last)
~/ CrashCourse Python Notes/Chapter 16 CC/Downloading Date/csv format/highs_lows.py in 
     18     highs = []
     19     for row in reader:
---> 20         high = int(row[8])
     21         highs.append(high)
     22 

ValueError: invalid literal for int() with base 10:

любая помощь будет отличной

1 Ответ

0 голосов
/ 04 мая 2020

Где-то в столбце 8 CSV пусто, вам нужно решить, является ли это ошибкой, которая должна завершить вашу программу, или что-то, из чего вы можете восстановиться. Следующий код регистрирует ошибку и продолжает обработку. Как минимум, это хороший способ отладки проблемы.

import os
import csv

CURRENT_DIR = os.path.dirname(__file__)
file_path = os.path.join(CURRENT_DIR, 'sitka_weather_2018_full.csv')

with open(file_path) as f:
    reader = csv.reader(f)
    header_row = next(reader)

    highs = []
    for i, row in enumerate(reader, 2):
        # Ignore empty lines
        if not row:
            continue
        # Get high column as int. If error, log and ignore
        try:
            high = int(row[8])
            highs.append(high)
        except ValueError:
            print("Error line {}: {}".format(i, row))
        except IndexError:
            # Wrong number of columns, this file is corrupted. 
            print("Invalid column count line {}: {}".format(i, row))
            exit(2)
    print(highs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...