【发布时间】:2016-02-24 10:23:39
【问题描述】:
我得到一个“TypeError: Can't convert 'float' object to str implicitly”错误,因为我试图将浮点数除以字符串。
我正在尝试将字符串转换为浮点数,但仍然出现错误。
字符串 'empNumber' 是所有数字,但有一个逗号(例如:112,000) - 因此使用“替换”函数来去除逗号。当我尝试划分“最终/小数”时出现错误。如何解决此类型错误?
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)
【问题讨论】:
-
这里有很多不相关的代码;您应该将示例剥离到相关位,并确保它是正确的。您的示例中没有变量
empNumber2。没有迹象表明错误在哪里。当您将字符串转换为浮点数时,您甚至不会提及您现在遇到的错误。阅读更多关于SSCCE -
我确实说过我在哪里画了一个错误。错误发生在“revPerEmp = final/decimal”的第一次出现。错误说,“TypeError:无法将'float'对象隐式转换为str”
-
还是后面的那一行?
print(ticker+": "+revPerEmp) -
正如 Octavian 所说,您收到您所说的错误的可能性为零。
-
@Obsidian 是的,我的 IDE 在网上说 print(ticker+": "+revPerEmp).您注意到什么问题?