获取值错误:基数为10的int()的文字无效:' 56,990'

时间:2017-10-27 18:11:35

标签: python-3.x beautifulsoup python-requests

所以我试图废弃一个包含笔记本电脑价格的网站。但是,这是一个srting,为了比较的目的,我需要将它转换为int.But使用相同的我得到一个无类型的错误:无效的文字为int ()与基数10:' 56,990'

以下是代码:

from bs4 import BeautifulSoup

import requests
r  = requests.get("https://www.flipkart.com/apple-macbook-air-core-i5-5th-gen-8-gb-128-gb-ssd-mac-os-sierra-mqd32hn-a-a1466/p/itmevcpqqhf6azn3?pid=COMEVCPQBXBDFJ8C&srno=s_1_1&otracker=search&lid=LSTCOMEVCPQBXBDFJ8C5XWYJP&fm=SEARCH&iid=2899998f-8606-4b81-a303-46fd62a7882b.COMEVCPQBXBDFJ8C.SEARCH&qH=9e3635d7234e9051")

data = r.text

soup = BeautifulSoup(data,"lxml")
data=soup.find('div',{"class":"_1vC4OE _37U4_g"})
cost=(data.text[1:].strip())
print(int(cost))

PS:我用文字[1:]来删除货币字符 我在最后一行得到错误。基本上我需要得到成本的int值。

3 个答案:

答案 0 :(得分:0)

python不理解整数中的,组分隔符,因此您需要删除它们。尝试:

cost = data.text[1:].strip().translate(None,',')

答案 1 :(得分:0)

而不是为 想要的每个字符创建一个新解决方案(strip()函数用于空白,[1:]指数用于货币,数字分隔符的其他内容)考虑一个单一的解决方案来收集 想要的内容:

>>> import re
>>> text = "\u20B956,990\n"
>>> cost = re.sub(r"\D", "", text)
>>> print(int(cost))
56990

re.sub()替换任何不是数字的东西。

答案 2 :(得分:0)

该值中包含逗号。因此,在将逗号转换为整数之前,需要将逗号替换为空字符。

    print(int(cost.replace(',','')))