Как избавиться от лишних круглых скобок, кавычек или запятых Python

#python-3.x #discord.py

#python-3.x #discord.py

Вопрос:

Я создаю бота discord, и у меня возникла проблема с получением значений списка без дополнительных круглых скобок, кавычек или запятых.

вот код:

 #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)])))
  

и вот вывод

Тип данных перед преобразованием их в строку — список

я попытался перевести значения в строковый тип, чтобы избавиться хотя бы от кавычек, но это не сработало

Мой вопрос в том, есть ли способ просто получить значения, не делая ничего дополнительного к нему?

Спасибо

Комментарии:

1. Может быть, сделать str(item_dur[listindexcheck(i 1)][0]) , чтобы получить только первый элемент кортежа.

2. @bubulledu93 это работает отлично, почему? это потому, что данные, которые я получаю, представляют собой кортеж только с одним значением? в любом случае это самый простой способ на данный момент, поэтому, если бы вы могли превратить это в ответ, который был бы приятным, и спасибо

Ответ №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] .

Ответ №2:

После того, как вы превратили это в строку, вы можете использовать метод replace(), чтобы удалить все лишние фрагменты, которые вам там не нужны. Вы бы заменили все, что вам там не нужно, на '' , чтобы просто удалить это из строки.

Вот некоторая информация о методе replace():https://www.w3schools.com/python/ref_string_replace.asp

Комментарии:

1. Разве я не должен сначала привести это к переменной, чтобы сделать это? Я попробую это позже

2. Возможно, вы сможете добавить его в свой код в качестве дополнительного исполняемого метода, например, print (type(str(item_ids[listindexcheck(i 1)]).replace(«(«).replace(«)»))). Но я не уверен в этом. Если нет, вам придется создать дополнительную переменную yes.

Ответ №3:

Вы можете использовать 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')
  

Итак, это сработает для вас.