【发布时间】:2021-03-20 20:59:45
【问题描述】:
问题:
我想知道如何在 python 中使用 split() 来处理带有两个或多个分隔符的文本。运行代码时出现错误。下面提供了代码、错误和示例数据。
代码:
from mrjob.job import MRJob
from mrjob.step import MRStep
class LeagueCount(MRJob):
def steps(self):
return [
MRStep(
mapper=self.mapper_get_league,
reducer=self.reducer_count_league
)
]
def mapper_get_conference(self, _, line):
(Players, Team,League, year) = line.split('|')
yield League, 1
def reducer_count_league(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
LeagueCount.run()
观察到的错误:
ValueError:要解压的值太多(预计 4 个)
示例数据:
player1, player2, player3|切尔西|英超|2014
player1, player2, player3|阿森纳|预备役|2018
player1, player2, player3|马刺队|预备队|2015
player1, player2, player3|切尔西|Premership|2016
【问题讨论】:
-
您需要编辑帖子以执行以下操作:1) 为代码提供适当的缩进。 2) 为我们提供该行包含的内容的示例,以便我们了解为什么会引发此错误(例如为什么它返回超过 4 个元素)。 3) 向我们提供您想要达到的目标的明确预期输出。如果您提供这些详细信息,我们可以更好地帮助您。截至目前,这个问题尚未明确。
-
@the23Effect 感谢您的回复,代码中添加了示例数据。
-
感谢您提供详细信息。我编辑的帖子中有一些格式错误。
-
@the23Effect 我已经更新了帖子,当我使用上面的代码时,只有一个球员可以工作,我能够获得每个独特的联赛及其数量。但是,通过使用逗号分隔添加更多玩家,它会弹出此错误。请告诉我你的想法,谢谢
标签: python mapreduce delimiter valueerror