После удаления нецифровых символов из строки и использования в ней функции int () возникает ошибка - PullRequest
0 голосов
/ 09 февраля 2012

Конкретная строка

b = int(a.translate(None, "\t<,"))

a - это строка, содержащая "\t<56,000".Когда я печатаю результат операции перевода, я получаю «56000», но когда он попадает в строку int(), он выдает мне ошибку, говорящую

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

, как будто строка, которую я дал, была нулевойпо какой-то причине.Я что-то не так делаю?(также я читаю строку из txt-файла, если это что-то меняет)

Вот исходный код: ссылка

Ответы [ 2 ]

1 голос
/ 09 февраля 2012

Проблема в том, что в дополнение ко всем строкам, которые, по вашему мнению, вы получаете, вы также получите несколько строк, состоящих только из "\ t", которые затем преобразуются в пустые строки при преобразовании строк.

Добавление дополнительного условия в if-тест при тестировании на пустые строки решает это:

if (i != " ") and (i != "") and (i != "\t"):
    (...)

вместо:

if i != " " and i != "":
    (...)

Кроме того, рассмотрите использование скобок для ясности ...

1 голос
/ 09 февраля 2012

Вы можете использовать filter:

b = int(filter(lambda character: character.isdigit(), a))

Для Python 3:

b = int(''.join(filter(lambda character: character.isdigit(), a)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...