Python script to read CSVs and regroup it into the data types I need
The opened file is never closed, a better habit is to use
with open(filename, 'rb') as foo:.
foo == True is rarely needed; unless you really need to
differentiate between True/False and the various other truthy
values it's easier just to test for the variable instead.  Same goes
for the empty list for that matter.
The pass doesn't do anything; price is unused.
Instead of linear search you could keep a set or dict of already
recorded people around.
With enumerate it's easier to destructure the result directly in the
loop; that said, the enumerate is also not necessary here.
The use of key looks buggy:  In the else branch it has never been
set (except maybe because of Pythons moronic scoping rules).  In any
case it'd better to make clear how that works.


That would be something the lines of the following then:

import csv

people = []
people_ids = set()

def add_person(group_id, new_subscription):
    people.append({
        'id': group_id,
        'subscriptions': [new_subscription]
    })
    people_ids.add(group_id)

#open csv file
with open(filename, 'rb') as file:
    csv_file = csv.reader(file)

    #read CSV file into a list of people
    for record in csv_file:
        sub_id = record[0]
        group_id = record[6]
        season_desc = record[11]
        series_desc = record[12]

        if "MW" in series_desc:
            sub_type = "Masterworks"
        elif "Pops" in series_desc:
            sub_type = "Pops"
        elif "Chamber" in series_desc:
            sub_type = "Chamber"

        new_subscription = {
            'id': sub_id,
            'season': season_desc,
            'sub_type': sub_type
        }

        #if this is the first time through the loop
        if len(people) == 0:
            add_person(group_id, new_subscription)
            continue

        #check if this person has already been recorded
        #if not, add the subscription to them and save the person
        if group_id not in people_ids:
            add_person(new_subscription)
            continue

        #check if this subscription has already been added to this person
        #use enumerate to get a key to search people
        for person in people:
            if person['id'] != group_id:
                person['subscriptions'].append(new_subscription)


I also shuffled the branches around, which together with continue
makes for less indented blocks.

If you're going to extend this, I'd recommend more factoring into functions, a
main function, etc.