ValueError: недопустимый литерал для интервала () с основой 10: ''

Основа моложе, чем Ваш вопрос, и определенно чувствует себя подобно 1.0, но пользовательский опыт мили лучше, чем опыт использования любого из "межплатформенных" приложений на Mac

http://menial.co.uk/software/base/

, я рекомендую купить лицензию, прежде чем разработчик поймет, что взимает слишком мало за него.

ОБНОВЛЕНИЕ: С декабря 2008 Основа теперь до версии 2.1, это стало превосходным продуктом. Я не помню то, чего это раньше стоило, но я заплатил за 1.x к 2.x обновление. Все еще настоятельно рекомендованный.

ДРУГОЕ ОБНОВЛЕНИЕ: Основа доступна на Mac App Store, можно найти полезным считать обзоры там.

251
задан fifi finance 10 February 2019 в 00:55
поделиться

4 ответа

Питонический способ перебора файла и преобразования в int:

for line in open(fname):
   if line.strip():           # line contains eol character(s)
       n = int(line)          # assuming single integer on each line

То, что вы пытаетесь сделать, немного сложнее, но все же не так просто:

h = open(fname)
for line in h:
    if line.strip():
        [int(next(h).strip()) for _ in range(4)]     # list of integers

Вот так обрабатывает 5 строк одновременно. Используйте h.next () вместо next (h) до Python 2.6.

Причина, по которой у вас было ValueError , заключается в том, что int не может преобразовать пустую строку в целое число. В этом случае вам нужно будет либо проверить содержимое строки перед преобразованием, либо исключить ошибку:

try:
   int('')
except ValueError:
   pass      # or whatever
53
ответ дан 23 November 2019 в 02:54
поделиться
    readings = (infile.readline())
    print readings
    while readings != 0:
        global count
        readings = int(readings)

С этим кодом проблема. readings - это новая строка, прочитанная из файла - это строка. Следовательно, вы не должны сравнивать его с 0. Кроме того, вы не можете просто преобразовать его в целое число, если вы не уверены , что это действительно одно число. Например, пустые строки приведут здесь к ошибкам (как вы наверняка уже заметили).

А зачем вам глобальный счетчик? Это определенно плохой дизайн в Python.

1
ответ дан 23 November 2019 в 02:54
поделиться

У вас проблема с этой строкой:

while file_to_read != " ":

Не удается найти пустую строку. Находит строку, состоящую из одного пробела. По-видимому, это не то, что вы ищете.

Слушайте советы других. Это не очень идиоматический код Python, и он будет намного понятнее, если вы перебираете файл напрямую, но я думаю, что эту проблему тоже стоит отметить.

3
ответ дан 23 November 2019 в 02:54
поделиться

Я создаю программу, которая читает файл и если первая строка файла не пусто, читаются следующие четыре линий. Расчеты производятся на эти строки, а затем следующая строка прочтите.

Что-то вроде этого должно сработать:

for line in infile:
    next_lines = []
    if line.strip():
        for i in xrange(4):
            try:
                next_lines.append(infile.next())
            except StopIteration:
                break
    # Do your calculation with "4 lines" here
0
ответ дан 23 November 2019 в 02:54
поделиться
Другие вопросы по тегам:

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