Schack
Schack

Reputation: 883

Creating a list using csv.reader()

I'm trying to create a list in python from a csv file. The CSV file contains only one column, with about 300 rows of data. The list should (ideally) contain a string of the data in each row.

When I execute the below code, I end up with a list of lists (each element is a list, not a string). Is the CSV file I'm using formatted incorrectly, or is there something else I'm missing?

filelist = []                
with open(r'D:\blah\blahblah.csv', 'r') as expenses:
    reader = csv.reader(expenses)
    for row in reader:
        filelist.append(row)

Upvotes: 0

Views: 532

Answers (3)

juwens
juwens

Reputation: 3897

It seems your "csv" doesn't contain any seperator like ";" or ",". Because you said it only contains 1 column. So it ain't a real csv and there shouldn't be a seperator.

so you could simply read the file line-wise:

filelist = []
for line in open(r'D:\blah\blahblah.csv', 'r').readlines():
    filelist.append(line.strip())

Upvotes: 1

Robsdedude
Robsdedude

Reputation: 1403

Each row is read as list of cells. So what you want to do is

output = [ row[0] for row in reader ]

since you only have the first cell filled out in each row.

Upvotes: 0

Blender
Blender

Reputation: 298106

row is a row with one field. You need to get the first item in that row:

filelist.append(row[0])

Or more concisely:

filelist = [row[0] for row in csv.reader(expenses)]

Upvotes: 7

Related Questions