J'ai un fichier CSV avec des lignes comme celle-ci:
"AAA", "BBB", "Test, Test", "CCC"
"111", "222, 333", "XXX", "YYY, ZZZ"
etc ...
Je ne veux pas analyser les virgules sous les guillemets doubles. c'est à dire. Mon résultat attendu devrait être
AAA
BBB
Test, Test
CCC
Mon code:
import csv
with open('values.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
J'ai essayé d'utiliser le package csv sous python mais pas de chance. L'analyse analyse toutes les virgules.
S'il vous plaît faites le moi savoir si je manque quelque chose
Cela devrait faire:
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']
Vous avez des espaces avant les guillemets dans votre entrée. Définissez skipinitialspace
sur True
pour ignorer les espaces suivant un délimiteur:
Lorsque
True
, les espaces suivant immédiatement le délimiteur sont ignorés. La valeur par défaut estFalse
.
>>> 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']