我正在制作一个discord bot,并且在获取不包含额外括号、引号或逗号的列表值时遇到了问题。
这是代码:
#gets slots for page
def listindexcheck(slot):
if totalitemcount > slot + (page * 9):
return slot + (page * 9)
else:
return 0
if argument == 'show':
#message set up
embed = discord.Embed(
title='title',
description='Here is your inventory',
colour=discord.Colour.red())
for i in range(9):
embed.add_field(name=f"Slot ({listindexcheck(i+1)})", value=f'Dur: {str(item_dur[listindexcheck(i+1)])}n'
f'Mod: {str(item_mod[listindexcheck(i+1)])}n'
f'E.lvl: {str(item_level[listindexcheck(i+1)])}n'
f'*id:{str(item_ids[listindexcheck(i+1)])}*n')
embed.set_footer(text='page: ' + str(page+1))
msg = await ctx.send(embed=embed)
print (type(str(item_ids[listindexcheck(i+1)])))
这是的输出
转换为字符串之前的数据类型为列表
我试图将值转换为字符串类型,以至少去掉引号,但不起作用
我的问题是,有没有一种方法可以在不做任何额外事情的情况下获得价值?
感谢
从外观上看,item_dur[listindexcheck(i+1)
、item_mod[listindexcheck(i+1)
、item_level[listindexcheck(i+1)
、item_ids[listindexcheck(i+1)
似乎是内部只有一个项的元组。为什么括号里有逗号?这是因为逗号是元组,而不是括号。
因此,为了在打印括号和逗号时不获取它们,您可以只获取元组的第一项,如item_dur[listindexcheck(i+1)][0]
。
将其转换为字符串后,可以使用replace((方法删除任何不需要的多余部分。您可以用''
替换任何不需要的内容,只需将其从字符串中删除即可。
以下是关于replace((方法的一些信息:https://www.w3schools.com/python/ref_string_replace.asp
你可以使用string.replace
,如果你为它制作一个这样的函数会更好:
def delete_brackets(text: str):
return text.replace(')', '').replace(')', '').replace(',', '')
embed.add_field(name=f"Slot ({listindexcheck(i+1)})", value=f'Dur: {delete_brackets(str(item_dur[listindexcheck(i+1)]))}n'
f'Mod: {delete_brackets(str(item_mod[listindexcheck(i+1)]))}n'
f'E.lvl: {delete_brackets(str(item_level[listindexcheck(i+1)]))}n'
f'*id:{delete_brackets(str(item_ids[listindexcheck(i+1)]))}*n')
所以这对你有用。