Python Parse CSV Correctly
Solution 1:
You should use the csv
module:
import csv
reader = csv.reader(['1997,Ford,E350,"Super, luxurious truck"'], skipinitialspace=True)
for r in reader:
print r
output:
['1997', 'Ford', 'E350', 'Super, luxurious truck']
Solution 2:
The following method worked perfectly
d = {}
d['column1name'] = []
d['column2name'] = []
d['column3name'] = []
dictReader = csv.DictReader(open('filename.csv', 'rb'), fieldnames = ['column1name', 'column2name', 'column3name'], delimiter = ',', quotechar = '"')
for row in dictReader:
for key in row:
d[key].append(row[key])
The columns are stored in dictionary with the column names as the key.
Solution 3:
You have to define the doublequote as the quotechar
whithin the csv.reader()
statement:
>>> with open(r'<path_to_csv_test_file>') as csv_file:
... reader = csv.reader(csv_file, delimiter=',', quotechar='"')
... print(reader.next())
...
['1997', 'Ford', 'E350', 'Super, luxurious truck']
>>>
Solution 4:
If you don't want to use the CSV module you need to use a regular expression. Try this:
import re
regex = ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"
string = '1997,Ford,E350,"Super, luxurious truck"'
array = re.split(regex, string)
print(array[3])
"Super, luxurious truck"