[Python] Read specific columns from a csv file with csv module?

Discussão em 'Python' iniciado por Stack, Março 12, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to parse through a csv file and extract the data from only specific columns.

    Example csv:

    ID | Name | Address | City | State | Zip | Phone | OPEID | IPEDS |
    10 | C... | 130 W.. | Mo.. | AL... | 3.. | 334.. | 01023 | 10063 |


    I'm trying to capture only specific columns, say ID, Name, Zip and Phone.

    Code I've looked at has led me to believe I can call the specific column by its corresponding number, so ie: Name would correspond to 2 and iterating through each row using row[2] would produce all the items in column 2. Only it doesn't.

    Here's what I've done so far:

    import sys, argparse, csv
    from settings import *

    # command arguments
    parser = argparse.ArgumentParser(description='csv to postgres',\
    fromfile_prefix_chars="@" )
    parser.add_argument('file', help='csv file to import', action='store')
    args = parser.parse_args()
    csv_file = args.file

    # open csv file
    with open(csv_file, 'rb') as csvfile:

    # get number of columns
    for line in csvfile.readlines():
    array = line.split(',')
    first_item = array[0]

    num_columns = len(array)
    csvfile.seek(0)

    reader = csv.reader(csvfile, delimiter=' ')
    included_cols = [1, 2, 6, 7]

    for row in reader:
    content = list(row for i in included_cols)
    print content


    and I'm expecting that this will print out only the specific columns I want for each row except it doesn't, I get the last column only.

    Continue reading...

Compartilhe esta Página