当前位置: 首页 > 知识库问答 >
问题:

最大递归错误 Python

权玉泽
2023-03-14

我正试图从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]

共有1个答案

欧阳学真
2023-03-14

pickle.dump的这种异常通常意味着您试图腌制一个包含自身的对象(直接或间接)。

但是什么对象包含自己呢?当您将它们全部打印出来时,它们看起来都很好。

这是一个bs4.element.NaviGableString,您可以通过以下操作获得:

awayTeam = awayQTRScores[0]

你可能没有注意到它只是打印离开团队甚至打印repr(awayTeam),因为NavigableStringunicode的一个子类,没有定义自定义__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时,这会给我带来分段错误,而代码对较小的输入很好。请帮我解决。