My csv File sample :
'Date','Category','Ability'
'21,2,5','Sparrow','Air,land'
'4,5,6','Eagle','Air,Land'
My current code:
with open(Filepath,'r') as f :
user_read=csv.reader(f)
dict_date=[line['Date'] for line in user_read]
print(dict_date)
Error :
TypeError : list indices must be integer or slices,not str
My expected Output :
[21,2,5,4,5,6]
Any ideas.. So my Category and Ability has seperate Dictionary
CodePudding user response:
You're accessing the rows as dicts, which is available through csv.DictReader
, and also you're not setting the quotechar
for the dialect you're using which therefore defaults to "
.
The following does both and works in the way you want.
import csv
from io import StringIO
buf = StringIO(
"""\
'Date','Category','Ability'
'21,2,5','Sparrow','Air,land'
'4,5,6','Eagle','Air,Land'
"""
)
with buf as f:
reader = csv.DictReader(f, quotechar="'")
date = []
date = [
int(v) for row in reader for v in row["Date"].split(",")
]
print(date) # [21, 2, 5, 4, 5, 6]
CodePudding user response:
Try:
import csv
all_data = []
with open("data.csv", "r") as f_in:
reader = csv.reader(f_in, quotechar="'")
next(reader) # skip header
for row in reader:
all_data.extend(map(int, row[0].split(",")))
print(all_data)
Prints:
[21, 2, 5, 4, 5, 6]