Чтение указанных c столбцов из CSV-файла - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть CSV-файл с именем beers.csv, и я пытаюсь прочитать из него 4 столбца (brewery_name, beer_style, beer_name, beer_abv), которые являются заголовками столбцов. У меня есть следующий код:

import csv

csvFile = "beers.csv"
csvData = csv.reader(csvFile, delimiter=',', skipinitialspace=True) 

beer, abv, style, brewery = set(), set(), set(), set()
for row in csvData:
    beer.add(row[10])
    abv.add(row[11])
    style.add(row[7])
    brewery.add(row[1])
print(beer, abv, style, brewery) 

По какой-то причине я получаю сообщение об ошибке:

Traceback (most recent call last):
  File "filter.py", line 8, in <module>
    beer.add(row[10])
IndexError: list index out of range

Вот 15 верхних строк моего beers.csv файла:

brewery_id,brewery_name,review_time,review_overall,review_aroma,review_appearance,review_profilename,beer_style,review_palate,review_taste,beer_name,beer_abv,beer_beerid
10325,Vecchio Birraio,1234817823,1.5,2,2.5,stcules,Hefeweizen,1.5,1.5,Sausa Weizen,5,47986
10325,Vecchio Birraio,1235915097,3,2.5,3,stcules,English Strong Ale,3,3,Red Moon,6.2,48213
10325,Vecchio Birraio,1235916604,3,2.5,3,stcules,Foreign / Export Stout,3,3,Black Horse Black Beer,6.5,48215
10325,Vecchio Birraio,1234725145,3,3,3.5,stcules,German Pilsener,2.5,3,Sausa Pils,5,47969
1075,Caldera Brewing Company,1293735206,4,4.5,4,johnmichaelsen,American Double / Imperial IPA,4,4.5,Cauldron DIPA,7.7,64883
1075,Caldera Brewing Company,1325524659,3,3.5,3.5,oline73,Herbed / Spiced Beer,3,3.5,Caldera Ginger Beer,4.7,52159
1075,Caldera Brewing Company,1318991115,3.5,3.5,3.5,Reidrover,Herbed / Spiced Beer,4,4,Caldera Ginger Beer,4.7,52159
1075,Caldera Brewing Company,1306276018,3,2.5,3.5,alpinebryant,Herbed / Spiced Beer,2,3.5,Caldera Ginger Beer,4.7,52159
1075,Caldera Brewing Company,1290454503,4,3,3.5,LordAdmNelson,Herbed / Spiced Beer,3.5,4,Caldera Ginger Beer,4.7,52159

Что я делаю не так?

1 Ответ

2 голосов
/ 18 февраля 2020
import csv

cols = ('brewery_name', 'beer_style', 'beer_name', 'beer_abv')
sets = {}
with open("beers.csv") as f:
    reader = csv.DictReader(f)
    for row in reader:
        for col in cols:
            sets.setdefault(col, set()).add(row[col])
print(sets)

$ python3 beers.py {'brewery_name': {'Пивоваренная компания Caldera', 'Vecchio Birraio'}, 'beer_style': {'American Double / Imperial IPA', 'Foreign / Export Stout ',' Herbed / Spiced Beer ',' German Pilsener ',' Hefeweizen ',' Engli sh Strong Ale '},' beer_name ': {' Black Horse Black Beer ',' Sausa Pils ',' Sausa Weizen ',' Cauldron DIPA ',' Caldera Ginger Beer ',' Red Moon '},' beer_abv ': {' 5 ',' 7.7 ',' 4.7 ',' 6.5 ',' 6.2 '}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...