ValueError:int()以10为底的无效文字:“-”

时间:2019-05-29 06:25:01

标签: python beautifulsoup

我正在尝试使用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 :(得分:0)

代替这一行:

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

答案 1 :(得分:0)

问题来自

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

您尝试在int中转换的表达式的结果是字符'-',而python无法将其解释为int。 问题只是您没有使用

选择您的数据的正确部分
e.split('"')[1][-2:]

为帮助您更多,我们需要您的数据样本。