我遇到了一个“TypeError:cannot convert'float'object implically to str”错误,因为我试图用一个字符串除以一个float。
我试图将字符串转换为浮点型,但仍有一个错误。
“empex”函数是“替换所有逗号的数字”。当我试图除掉“final/decimal”时,出现了一个错误。如何修复此类型错误?
def revPerEmployee():
for ticker in sp500short:
searchurl = "http://finance.yahoo.com/q/ks?s="+ticker
f = urlopen(searchurl)
html = f.read()
soup = BeautifulSoup(html, "html.parser")
searchurlemp = "http://finance.yahoo.com/q/pr?s="+ticker+"+Profile"
femp = urlopen(searchurlemp)
htmlemp = femp.read()
soupemp = BeautifulSoup(htmlemp, "html.parser")
try:
revenue2 = soup.find("td", text="Revenue (ttm):").find_next_sibling("td").text
empCount2 = soupemp.find("td", text="Full Time Employees:").find_next_sibling("td").text
except:
revenue2 = "There is no data for this company"
empCount2 = "There is no data for this company"
if revenue2 == "There is no data for this company" or empCount2 == "There is no data for this company":
lastLetter = ticker+": There is no data for this company"
else:
lastLetter = revenue2[len(revenue2)-1:len(revenue2)]
empNumber = empCount2.replace(",", "")
decimal = float(empNumber)
if lastLetter == "B":
result = revenue2[:-1]
revNum = float(result)
final = revNum * 1000000000.0
revPerEmp = final/decimal
print(ticker+": "+revPerEmp)
elif lastLetter == "M":
result = revenue2[:-1]
revNum = float(result)
final = revNum * 1000000.0
#newnum = "{:0,.2f}".format(final)
revPerEmp = final/decimal
print(ticker+": "+revPerEmp)
elif lastLetter == "K":
result = revenue2[:-1]
revNum = float(result)
final = revNum * 1000.0
#newnum = "{:0,.2f}".format(final)
revPerEmp = final/decimal
print(ticker+": "+revPerEmp)
else:
print(lastLetter)
17 + "orange"
是无稽之谈,不能添加数字和字符串。你想要吗(您可以将
^{pr2}$%s
切换为其他格式,如%.2f
),或者问题是,您的程序假设从URL请求中获得的是一个数字形式的数字,后跟后缀(K、M或B)。这不是测试。在
还有两个改进代码的建议。首先,你要试试。。。except子句在无法获取数据时进行检查。如果转换失败,也可以使用它。消息“没有此公司的数据”可以打印在except子句中。在
其次,你有三个非常相似的if从句,说明它们可以被压缩。python字典可用于后缀值。在
现在,如果URL请求中缺少数据,如果转换失败,或者后缀错误,程序将执行except子句。在
相关问题 更多 >
编程相关推荐