Python: How to import information from a .csv file to python as a list with tuples inside?
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')
user2248286
Updated on June 17, 2022Comments
-
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 about 11 yearsHello!! 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 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.