Python analiza CSV ignorando la coma con comillas dobles
Tengo un archivo CSV con líneas como esta:
"AAA", "BBB", "Test, Test", "CCC"
"111", "222, 333", "XXX", "YYY, ZZZ"
etcétera ...
No quiero analizar comas entre comillas dobles. es decir. Mi resultado esperado debería ser
AAA
BBB
Test, Test
CCC
Mi código:
import csv
with open('values.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
Intenté usar el paquete csv en Python pero no tuve suerte. Los análisis explotan todas las comas.
Por favor, avíseme si me falta algo.
Aceptado
Esto debería hacer:
lines = '''"AAA", "BBB", "Test, Test", "CCC"
"111", "222, 333", "XXX", "YYY, ZZZ"'''.splitlines()
for l in csv.reader(lines, quotechar='"', delimiter=',',
quoting=csv.QUOTE_ALL, skipinitialspace=True):
print l
>>> ['AAA', 'BBB', 'Test, Test', 'CCC']
>>> ['111', '222, 333', 'XXX', 'YYY, ZZZ']
Tiene espacios antes de las comillas en su entrada. Configúrelo skipinitialspace
paraTrue
omitir cualquier espacio en blanco después de un delimitador:
Cuando se ignora
True
el espacio en blanco que sigue inmediatamente al delimitador . El valor predeterminado esFalse
.
>>> import csv
>>> lines = '''\
... "AAA", "BBB", "Test, Test", "CCC"
... "111", "222, 333", "XXX", "YYY, ZZZ"
... '''
>>> reader = csv.reader(lines.splitlines())
>>> next(reader)
['AAA', ' "BBB"', ' "Test', ' Test"', ' "CCC"']
>>> reader = csv.reader(lines.splitlines(), skipinitialspace=True)
>>> next(reader)
['AAA', 'BBB', 'Test, Test', 'CCC']