#python #csv #format #tabular
#python #csv #формат #табличный
Вопрос:
Как отформатировать выходные данные в таблицу, аналогичную приведенному ниже дизайну, не включая ненужные столбцы? Я работаю над def two, и он возвращает необработанные данные, которые я хочу, но я не знаю, как отформатировать их, чтобы они напоминали таблицу под ними.
['1000.3', '', '']
['Coke Can', '1.1', '100']
['Bread', '0.7', '30']
['Spaghetti', '1.2', '100']
['Tomato Sauce', '0.8', '100']
['Bin Bags', '2.5', '4']
Enter anything to return to main menu
-----------------------------
Shop has 1000.30 in cash
-----------------------------
| Product | Qty |
-----------------------------
| Coke Can | 00100|
|----------------------------|
| Bread | 00030|
|----------------------------|
| Spaghetti | 00100|
|----------------------------|
| Tomato Sauce | 00100|
|----------------------------|
| Bin Bags | 00004|
|----------------------------|
def two():
with open('../stock.csv') as csvfile:
readCSV = csv.reader(csvfile, delimiter=',')
first_row = next(readCSV)
print(first_row)
for row in readCSV:
print(row)
anykey=input("Enter anything to return to main menu")
mainMenu()
#main routine
mainMenu()
Комментарии:
1. Вы можете использовать pandas вместо написания функции. Написание функции займет больше времени. Но для этого вам нужно внести небольшие изменения в свой csv-файл, если вы хотите, чтобы ваша таблица выглядела так, как вы показали в своем вопросе.
Ответ №1:
Просто немного поиграв с инструкцией print, вы сможете добиться этого с легкостью.
import csv
fields = []
filename = "stock.csv"
with open(filename, 'r') as csvfile:
csvreader = csv.reader(csvfile)
fields = next(csvreader)
print('-'*40)
print(f'Shop has {fields[0]} in cash')
print('-'*40)
for row in csvreader:
print('-'*40)
print('| ', row[0], ' '*(24-len(row[0])),'| ', row[2],' '*2, '|')
print('-'*40)
Комментарии:
1. Спасибо за это. Что я действительно хочу сделать, так это чтобы файл csv считывал информацию без моего жесткого кодирования значений и создавал ее в табличной форме, чтобы отразить таблицу выше.
2. Работал отлично. Большое вам спасибо.