ValueError: неверный литерал для int () с основанием 10: Python - PullRequest
1 голос
/ 26 октября 2011

У меня есть следующий кусок кода. Я читаю из csv и анализирую его содержимое в списке:

import csv
finput = input.reader(open(path,'rb'),delimiter=',',quotechar='|')
print finput[0]

вывод:

['"1239"', '"2249.00"', '"1"', '"3"', '"2011-02-20"']

Теперь я хочу просто извлечь число 1239 ... первый элемент, поэтому print finput [0] [0] дает "1239". Теперь, если я преобразую это в целое число:

el = int(finput[0][0])

Я получаю эту ошибку:

ValueError: invalid literal for int() with base 10: '"1239"'

Почему у него такие двойные кавычки?

Как правильно извлечь целое число 1239?

Ответы [ 2 ]

7 голосов
/ 26 октября 2011

Вкратце:

int(finput[0][0].strip('"'))

Но почему вы установили quotechar на |? Вы уверены, что вместо этого должно быть "? Если оно установлено на ", вы должны получить строки без кавычек.

1 голос
/ 26 октября 2011

Использование strip().

el = int(finput[0][0].strip('"'))

>>> a = '"1234"'
>>> a
'"1234"'
>>> a.strip('"')
'1234'
>>> int(a.strip('"'))
1234

Документация для strip() выглядит следующим образом:

Возвращает копию строки с удаленными начальными и конечными символами. Если символы не указаны или отсутствуют, пробельные символы удаляются. Если задано, а не None, символы должны быть строкой; символы в строке будут удалены с обоих концов строки, для которой вызывается этот метод.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...