Python: How to import information from a .csv file

2020-04-16 19:13发布

问题:

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()

回答1:

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')


回答2:

import csv
DIR = 'your dicrectory path'
openfile = csv.DictReader(open(DIR + '/file_name.csv', 'r'))
print .fieldnames
for p in filename:
    try:
        p = dict((k.strip().strip('\\t'), v) for k, v in p.iteritems() if v.lower() != 'null')
except AttributeError, e:
    print e
    print p
    raise Exception()
print p.get('Name'),p.get('Details')