Подтвердить что ты не робот

Python Как обрезать конечные пробелы в csv DictReader

Я использую 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 '], а иногда и прокладывать или сокращать пробелы. Уч!

4b9b3361

Ответ 1

Просто прочитайте первую строку вручную и передайте ее в DictReader.

with open('file.csv') as fh:
    header = [h.strip() for h in fh.next().split(',')]
    reader = csv.DictReader(fh, fieldnames=header)

Ответ 2

Вам необходимо зарегистрировать пользовательский диалект в модуле 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')

Здесь все Параметры диалога