所以我试图废弃一个包含笔记本电脑价格的网站。但是,这是一个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值。
答案 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(',','')))