ValueError: недопустимый литерал для int () с основанием 10: '-' - PullRequest
0 голосов
/ 29 мая 2019

Я сохраняю некоторые данные, используя python в качестве файла CSV, при попытке преобразовать строку (числовые значки) в int.

style_tag = soup.select('style')
icons = (str(style_tag[1]).split("."))
mp = {}
for e in icons:
if "icon-" in e:
if "content" in e:
mp[e.split("{")[0].split(":")[0]] = (int(e.split('"')[1][-2:])) - 1

В приведенных выше строках показана ошибка

mp[e.split("{")[0].split(":")[0]] = (int(e.split('"')[1][-2:])) - 1
ValueError: invalid literal for int() with base 10: '-'

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Проблема возникла из

int(e.split('"')[1][-2:])

Результатом выражений, которые вы пытаетесь преобразовать в int, является символ '-', и python не может интерпретировать это как int.Проблема только в том, что вы не выбрали правильную часть ваших данных с помощью

e.split('"')[1][-2:]

. Чтобы помочь вам больше, нам понадобится образец ваших данных.

0 голосов
/ 29 мая 2019

Вместо этой единственной строки:

mp[e.split("{")[0].split(":")[0]] = (int(e.split('"')[1][-2:])) - 1

Попробуйте:

key_ = e.split("{")[0].split(":")[0]
val_ = e.split('"')[1][-2:]
try:
    val_int = int(val_) - 1
    mp[key_] = val_int
except Exception:
    pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...