我正试图从ESPN那里获得一些票房成绩。com并将其放入Pandas DataFrame中。我过去也以同样的方式做过类似的事情,没有任何问题。然而,在这种情况下,当我试图保存DataFrame时,我遇到了这个错误。
RuntimeError:调用Python对象时超出最大递归深度
当我试图将它保存为hdf5表时,也出现了类似的错误。
即使这个代码片段也会给出相同的错误。我很困惑它为什么要这样做?与功能有关吗?
url = 'http://espn.go.com/nba/boxscore?gameId=400278773'
boxurl = urllib2.urlopen(url).read()
soup = BeautifulSoup(boxurl)
tables = soup.findAll('table')
lineScoreTable = tables[-2]
lineScoreRows = lineScoreTable.findAll('tr')
def GetAwayQTRScores():
scoreRow = lineScoreRows[1].findAll('td')
awayQTRScores = []
for x in scoreRow:
scores = x.string
awayQTRScores.append(scores)
return awayQTRScores # returns list
awayQTRScores = GetAwayQTRScores()
awayTeam = awayQTRScores[0]
awayQ1 = int(awayQTRScores[1])
awayQ2 = int(awayQTRScores[2])
awayQ3 = int(awayQTRScores[3])
awayQ4 = int(awayQTRScores[4])
awayOT1 = np.nan if len(awayQTRScores) < 7 else int(awayQTRScores[5])
awayOT2 = np.nan if len(awayQTRScores) < 8 else int(awayQTRScores[6])
awayOT3 = np.nan if len(awayQTRScores) < 9 else int(awayQTRScores[7])
awayOT4 = np.nan if len(awayQTRScores) < 10 else int(awayQTRScores[8])
data = {'AwayTeam' :[awayTeam],
'AwayQ1' : [awayQ1],
'AwayQ2' : [awayQ2],
'AwayQ3' : [awayQ3],
'AwayQ4' : [awayQ4],
'AwayOT1' : [awayOT1],
'AwayOT2' : [awayOT2],
'AwayOT3' : [awayOT3],
'AwayOT4' : [awayOT4]}
testScrape = pd.DataFrame(data)
testScrape.save('testScrape')
()中的RuntimeError Traceback(最近一次调用最后一次)----
C: \Python27\lib\site packages\pandas\core\generic。pyc in save(self,path)26 27 def save(自我,路径):---
C:\Python27\lib\站点包\熊猫\核心\common.pyc保存(obj,路径)1562 f=打开(路径,'wb')1563尝试:-
RuntimeError:调用Python对象时超出最大递归深度
print data
返回
{“客场团队”:[u'LAL'],“客场OT4”:[nan],“外场Q4”:[27],“出场Q3”:[36],“第二客场Q2”:[24],“第一客场Q1”:[16],“第一客场OT1”:[nan]
pickle.dump的这种异常通常意味着您试图腌制一个包含自身的对象(直接或间接)。
但是什么对象包含自己呢?当您将它们全部打印
出来时,它们看起来都很好。
这是一个bs4.element.NaviGableString
,您可以通过以下操作获得:
awayTeam = awayQTRScores[0]
你可能没有注意到它只是打印离开团队
甚至打印repr(awayTeam),
因为NavigableString
是unicode
的一个子类,没有定义自定义__str__
或__repr__
,所以它打印就像字符串一样。
但它也没有定义自定义拾取器,因此它使用默认拾取器。一般来说,bs4
对象不是为腌制而设计的,其中许多对象不能。特别是,NavigableString
是一个间接包含自身的对象。正如文档所说:
如果你想在美丽汤之外使用NaviGableString
,你应该调用Unicode()
将其转换为普通的Python Unicode字符串。如果你不这样做,你的字符串将携带对整个美丽汤解析树的引用,即使你已经使用了美丽汤。
当然,解析树包含对字符串的引用,等等。因此,这种类型永远不能被pickle。
解决办法很简单。您想要一个简单的旧< code>unicode字符串,而不是< code>NavigableString,所以您可以这样做:
awayTeam = unicode(awayQTRScores[0])
问题内容: 我使用以下代码解决了Euler项目的问题10,该代码通过强力工作: 这三个功能的工作方式如下: isPrime 检查数字是否为质数; primeList 返回一个列表,其中包含一组在一定范围内且限制为“ n”的素数,并且; sumPrimes 对列表中所有数字的值求和。(不需要最后一个功能,但是我喜欢它的清晰度,特别是对于像我这样的初学者。) 然后,我编写了一个新函数 primeLis
我不明白为什么我会得到这个最大深度错误。iam试图使用bst递归方法在数组中查找数字索引,下面是我的代码 任何人都可以告诉我代码块中发生了什么 错误块: PS C:\Users\admin\Desktop\DSA
周一开始用Python编程。我喜欢学习它。但是当在tkinter菜单之间切换时,我一直试图理解如何避免递归。我确信这是一个非常基本的问题,我很感激你能容忍我在这个问题上的无知,但是我在别处找不到答案。 我现在所做的是,最终给了我一个错误:RuntimeError:调用Python对象时超出了最大递归深度 这是我目前使用的模式。更新:下面的代码现在是一个完整的、独立的副本,重现了我面临的问题!:D
问题内容: 递归的最大级别是多少?如何在Python中更改它? 问题答案: 默认深度为1000层,您可以使用模块中的功能进行更改。 警告: 请注意,如果由于堆栈空间有限而使性能更高,某些操作系统可能会开始出现问题。
本文向大家介绍python递归的最大层数?998相关面试题,主要包含被问及python递归的最大层数?998时的应答技巧和注意事项,需要的朋友参考一下
基本上问题来自codeforces(1485A)。问题是,当我给一些大的输入,如50000000a和5b时,这会给我带来分段错误,而代码对较小的输入很好。请帮我解决。