python如何修剪csv DictReader键中的尾随空格

时间:2014-12-11 20:53:08

标签: python

我正在使用python(2.6)csv DictReader。我的输入文件有一个标题行,其中列名称有尾随空格:

colname1,      colname2     ,col3, etc.
XX, YY, ZZ

返回的dict对象有key()= ['colname1', 'colname2 ', 'col3']

是否可以选择修剪键中的前导和尾随空格?

- 修改

在按名称处理时会出现问题:

with open(fname) as f:
   r = csv.DictReader(f)
   for row in r:
      print "processing", r["column1"], r["column2"]

文件是数据库转储。转储程序太聪明了 - 它根据数据调整输出列宽度 - 这意味着不同的选择集将具有不同的列宽和不同的密钥长度。有时我必须使用r['column2 '],有时填充或减少空格。哎哟!

3 个答案:

答案 0 :(得分:10)

只需手动阅读第一行并将其传递给DictReader

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

答案 1 :(得分:3)

您需要在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')

以下是所有Dialect Options

答案 2 :(得分:0)

Python3版本

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