Код не будет печатать несколько списков, но не показывает ошибок

#python #csv

#python #csv

Вопрос:

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

 import csv

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

next(f)

pNumber = []
pName = []
pDescription = []
pCategory = []
pPrice = []

for row in csv_f:
    pNumber.append(row[0])

for row in csv_f:
    pName.append(row[1])

for row in csv_f:
    pDescription.append(row[2])
    
for row in csv_f:
    pCategory.append(row[3])
    
for row in csv_f:
    pPrice.append(row[4])

print(pNumber)
print(pName)
print(pDescription)
print(pCategory)
print(pPrice)
  

CSV-файл products выглядит следующим образом

 Product #,Name,Description,Category,Price
38500,Backpacking Tent,"2-Person Backpacking Tent - 20D Ripstop Nylon",Outdoor,205.99
27840,Sit-Stand Desk,"Sit-Stand Compact Workstation Desk Converter, 37in",Household,139.99
37992,Mouse,"Dark Matter by Monoprice Rover Optical Gaming Mouse - 6200DPI",Office,19.99
24458,Subwoofer,"15in THX Ultra Certified 1000 Watt Powered Subwoofer",Audio,1280.07
38323,USB Cable,"USB 2.0 Type-C to Type-A Charge amp; Sync Kevlar-Reinforced Nylon-Braid Cable, 6ft, purple",Office,7.55
  

Ответ №1:

Ваши 2-5-е списки пусты, потому что первый цикл считывает все данные в файле; читать больше нечего. Если вы хотите снова выполнить итерацию по всему файлу, вам необходимо сбросить положение курсора в объекте file.

 f.seek(0)
  

часто это самый простой способ сделать это.

А еще лучше, храните все свои поля данных в одном цикле, а не считывайте весь файл для одного столбца за раз.

Еще лучше, просто прочитайте файл прямо во фрейм данных.

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

1. как мне прочитать файл прямо во фрейм данных?

2. Вы должны обратиться к существующей документации PANDAS или просто выполнить поиск ответа в своем браузере.