Python: How to import information from a .csv file to python as a list with tuples inside?

11,435

With the csv module it is quite simple:

import csv

with open('friends.csv', 'Ur') as f:
    data = list(tuple(rec) for rec in csv.reader(f, delimiter=','))

data is a list of tuples.

The csv module reads the files correctly:

"Smith, John",123

will be read as

('Smith, John', '123')
Share:
11,435
user2248286
Author by

user2248286

Updated on June 17, 2022

Comments

  • user2248286
    user2248286 almost 2 years

    I am new to programming so please excuse my shallow knowledge with coding. I have a .csv file that I can open with excel. Each row represents a person's name and their details (like address, phone number and age) with each detail in different columns. Whenever I move onto a new row it is another person's detail.

    I want to import this information into python such that each row (i.e. every detail of that person) is in 1 tuple (with each detail separated with a ',') and I want all the tuples in a list. So basically a list with tuples inside them.

    I have started with the coding from opening the file but just don't know how to implement each detail detail of the person in a tuple and all the tuples in a list. I am using Python 2.7.

    def load_friends(f):
    """
    Takes the name of a file containing friends information as described in the
    introduction and returns a list containing information about the friends
    in the file.
    
    load_friends(var) -> list
    
    """
    
    openfile = open('friends.csv', 'Ur')
    if f == 'friends.csv':
        openfile = open('friends.csv', 'Ur')
        lines = openfile.readlines()
        print lines
        openfile.close()
    
  • user2248286
    user2248286 about 11 years
    Hello!! Thanks for the fast reply!! I was fiddling with my original code and the code you suggested. After a while of figuring where to properly insert the code you gave me I got something similar to what you said the final execution should look like. However my result of the details of each person is given in square brackets [] not the tuple, curly brackets (). My final result is lists in a list. Like this:[['John Cleese', 'Ministry of Silly Walks', '5555421', '27 October'], ['Eric Idle', 'Spamalot', '55553311', '29 March']]. Can you please tell me where might I have gone wrong? Thank you!!
  • eumiro
    eumiro about 11 years
    @user2248286 - sorry, you're right - the csv.reader returns lists. Please see my edited answer, which will return a list of tuples.