【发布时间】:2020-11-01 07:36:06
【问题描述】:
您好,我正在使用来自以这种格式输出的 API 的数据(跨越大量行的示例,仅显示 2)
['347759', '98', '50752599']
['426291', '84', '3092962']
每条线代表游戏中的不同技能,每条数据代表玩家在该技能中的排名、他们在该技能中的等级以及他们在该技能中的总经验值 例如,如果第一个技能是挖掘,第二个技能是锻造,那么格式化数据将是
Mining : rank=347759 , level = 98 , xp = 50752599
Smithing : rank=426291, level = 84, xp = 3092962
我使用 http 请求来获取此数据,它跨越多行,目前我使用此代码(见下文)将数据分离成每行上的单独整数
line_count = 0
for line in data_processed:
if line != '':
skill_data = line.split(',')
player.mining.rank = skill_data[0]
player.mining.level = skill_data[1]
player.mining.xp = skill_data[2]
line_count = line_count + 1
显然问题在于,当它移动到文件中的下一行(ints 的第二个三重奏)而不是 player.mining.rank = skill_data[0] 等时,我将需要 player.smithing.rank = skill_data[0] 等 24 条不同的行(如那里是游戏中的 24 种不同技能)。
我将如何动态地从附加一个类对象如“mining”(源自“Skills”类并在“Player”对象下声明)切换到另一个类对象如“smithing”
欢迎任何建议 - 如果您需要更多解释或上下文,请发表评论 - 我会尽快回复
我知道我可以使用它(见下文),但问题是我有多个玩家从多个 http 请求中调用,因此它将跨越数百行代码,所有代码都非常相似,只是对象名称不同
if line_count == 1: player.mining.rank = skill_data[0] 和 if line_count == 2: player.smithing.rank = skill_data[0]
对于每个玩家,对象是他们的角色名称,例如Conial = Player(...)
【问题讨论】:
-
您还可以发布您提到的要将数据转换到的类吗? IE。
Player、Skills等 -
为您编辑并添加了照片和另一行文字
-
当您从您的 API 接收数据时,您如何知道哪一行对应于哪个技能?
-
在 API 规范下显示返回的数据包含每个技能 1 的 Rank Level Experience,然后是技能 2 的 Rank Level Experience,依此类推,所有技能以 \n 分隔并用“,”分隔每个值 - api 规范中给出了一个示例,可以在此处找到runescape.wiki/w/…,然后单击内容选项卡下的 old school hiscores
标签: python class object dynamic