Ответ 1
Просто прочитайте первую строку вручную и передайте ее в DictReader
.
with open('file.csv') as fh:
header = [h.strip() for h in fh.next().split(',')]
reader = csv.DictReader(fh, fieldnames=header)
Я использую python (2.6) csv DictReader. Мой входной файл имеет строку заголовка, где имена столбцов имеют завершающие пробелы:
colname1, colname2 ,col3, etc.
XX, YY, ZZ
Возвращенный объект dict имеет ключ() = ['colname1', 'colname2 ', 'col3']
Есть ли возможность обрезать ведущие и конечные пробелы из ключей?
- изменить
Проблема возникает при обработке именами ключей:
with open(fname) as f:
r = csv.DictReader(f)
for row in r:
print "processing", r["column1"], r["column2"]
Файлы - это дампы базы данных. И программа дампа слишком умна - она корректирует ширину столбца вывода в зависимости от данных, что означает, что разные наборы выборок будут иметь разную ширину столбца и длину ключа. Иногда я должен использовать r['column2 ']
, а иногда и прокладывать или сокращать пробелы. Уч!
Просто прочитайте первую строку вручную и передайте ее в DictReader
.
with open('file.csv') as fh:
header = [h.strip() for h in fh.next().split(',')]
reader = csv.DictReader(fh, fieldnames=header)
Вам необходимо зарегистрировать пользовательский диалект в модуле csv
csv.register_dialect('MyDialect', quotechar='"', skipinitialspace=True, quoting=csv.QUOTE_NONE, lineterminator='\n', strict=True)
затем используйте диалект при создании DictReader:
my_reader = csv.DictReader(trip_file, dialect='MyDialect')
Здесь все Параметры диалога