Я пытаюсь вывести уже отформатированное содержимое CSV-файла в текстовый канал, но когда я это делаю, оно находится в неупорядоченных строках. Как я могу это исправить?

#python #arrays #csv #formatting #discord.py

#python #массивы #csv #форматирование #discord.py

Вопрос:

Я очень новичок в программировании, поэтому такие вещи для меня все еще новы.

 import csv
import discord
from discord.ext import commands

f = open('discounts.csv')
csv_f = csv.reader(f)

token = '####'
client = discord.Client()

@client.event
async def on_ready():
    print('Bot ready')

@client.event
async def on_message(message):
    if message.author == client.user: #preventing the bot from replying to itself
        return
    
    if message.channel.id == ###:
      if message.content.startswith('.sales'):
          channel = client.get_channel(###)
          msg = 'The latest discounts on Steam are:n'
          await channel.send(msg)
          for row in csv_f:
              await channel.send(('{:<40}  {:<10}  {:<10}').format(*row).replace('Â',''))
      else:
        await message.delete()

client.run(token)

  

Обратите внимание, что я заменил идентификаторы токена и канала на ‘#’.

При запуске этот код работает так, как задумано, но когда я запускаю команду ‘.sales’ в канале, я получаю от бота следующее: Изображение результата

Когда я должен получить следующее: изображение желаемого результата

Мне интересно, можно ли вообще исправить эту проблему, и если да, то как я буду это делать, или есть какие-либо другие методы вывода содержимого CSV-файла в Discord.

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

1. Я сделал что-то подобное, за исключением того, что вместо непосредственного использования файла .csv я создал словарь и использовал его вместо этого. Поскольку похоже, что ваш файл .csv является локальным, и вы все равно будете вручную редактировать его для получения новых скидок, я бы попробовал это.

2. Хорошо, я попробую, спасибо за совет.

Ответ №1:

Хорошо, я исправил это, добавив обратные метки вокруг списка, что превращает его в блок кода, что означает, что строки были упорядочены успешно:

 import csv
import discord
from discord.ext import commands

f = open('discounts.csv')
csv_f = csv.reader(f)

token = '###'
client = discord.Client()

@client.event
async def on_ready():
    print('Bot ready')

@client.event
async def on_message(message):
    if message.author == client.user: #preventing the bot from replying to itself
        return
    
    if message.channel.id == ###:
      if message.content.startswith('.sales'):
          channel = client.get_channel(###)
          msg = 'The latest discounts on Steam are:n'
          await channel.send(msg)
          for row in csv_f:
              await channel.send(('`{:<40}  {:<10}  {:<10}`').format(*row).replace('Â',''))
      else:
        await message.delete()

client.run(token)
  

Надеюсь, это поможет кому-либо с подобной проблемой в будущем.