使用 %s 时出现不支持的操作数类型错误
Posted
技术标签:
【中文标题】使用 %s 时出现不支持的操作数类型错误【英文标题】:unsupported operand type(s) error when using %s 【发布时间】:2021-12-26 01:08:09 【问题描述】:我正在尝试让这段代码工作,它将一些 JSON 输出传递到 discord.py 嵌入中,但我遇到了一些问题,这是我的一段代码。
@client.event
async def on_message(message):
if message.content.startswith('!hello'):
print("dick")
embed = discord.Embed(title="Verium Mining", url="https://wiki.vericoin.info/images/thumb/b/b5/Verium-01.png/176px-Verium-01.png", color=0x5da3fd)
embed.add_field(name="Balance", value='%s coins', inline=False) % (json.loads(requests.get('https://vrm.mining-pool.ovh/index.php?page=api&action=getuserbalance&api_key=90ccec2fe5216ee73f6143ab3f59804d914a0df65165bedddd6f7a78fb6ffd15&id=4483').text)['getuserbalance']['data']['confirmed'])
embed.add_field(name="Hashrate", value="undefined", inline=False)
embed.add_field(name="Sharerate", value="undefined", inline=False)
embed.set_footer(text="undefined")
运行时出现以下错误:
TypeError: unsupported operand type(s) for %: 'Embed' and 'str'
我该如何解决这个问题?
提前致谢
【问题讨论】:
您的意思是将%
运算符应用于字符串文字'%s coins'
?
是的,所以输出是“硬币数量”硬币
那么你的意思是value='%s coins'%json.loads(...)
。您将 %
运算符应用于错误的对象。如果您不尝试在一行中做这么多,您的代码会更清晰。
是的,但我将如何在代码中实现它?
【参考方案1】:
你在哪里
embed.add_field(name="Balance", value='%s coins', inline=False) % (json.loads(requests.get('https://vrm.mining-pool.ovh/index.php?page=api&action=getuserbalance&api_key=90ccec2fe5216ee73f6143ab3f59804d914a0df65165bedddd6f7a78fb6ffd15&id=4483').text)['getuserbalance']['data']['confirmed'])
你的意思是
embed.add_field(name="Balance", value='%s coins' % (json.loads(requests.get('https://vrm.mining-pool.ovh/index.php?page=api&action=getuserbalance&api_key=90ccec2fe5216ee73f6143ab3f59804d914a0df65165bedddd6f7a78fb6ffd15&id=4483').text)['getuserbalance']['data']['confirmed']), inline=False)
虽然这样写会更清楚:
num_coins = json.loads(requests.get('https://vrm.mining-pool.ovh/index.php?page=api&action=getuserbalance&api_key=90ccec2fe5216ee73f6143ab3f59804d914a0df65165bedddd6f7a78fb6ffd15&id=4483').text)['getuserbalance']['data']['confirmed']
embed.add_field(name="Balance", value='%s coins'%num_coins, inline=False)
如果您使用的是最新版本的 Python,则可以使用 f 字符串并完全避免使用 %
运算符:
num_coins = json.loads(requests.get('https://vrm.mining-pool.ovh/index.php?page=api&action=getuserbalance&api_key=90ccec2fe5216ee73f6143ab3f59804d914a0df65165bedddd6f7a78fb6ffd15&id=4483').text)['getuserbalance']['data']['confirmed']
embed.add_field(name="Balance", value=f'num_coins coins', inline=False)
【讨论】:
以上是关于使用 %s 时出现不支持的操作数类型错误的主要内容,如果未能解决你的问题,请参考以下文章
pip install virtualenv 和 virtualenvwrapper 时出现不支持的语言环境设置错误
codeblocks调试时出现不支持16位应用程序的提示,但编译时没有出现错误?