我正在使用python(2.6)csv DictReader.我的输入文件有一个标题行,其中列名称有尾随空格:
colname1, colname2 ,col3, etc.
XX, YY, ZZ
Run Code Online (Sandbox Code Playgroud)
返回的dict对象有key()= ['colname1', 'colname2 ', 'col3']
是否可以选择修剪键的前导和尾随空格?
- 编辑
在键名处理中出现问题:
with open(fname) as f:
r = csv.DictReader(f)
for row in r:
print "processing", r["column1"], r["column2"]
Run Code Online (Sandbox Code Playgroud)
这些文件是数据库转储.转储程序太聪明了 - 它根据数据调整输出列宽度 - 这意味着不同的选择集将具有不同的列宽和不同的密钥长度.有时我必须使用r['column2 '],有时填充或减少空间.哎哟!
Wol*_*lph 14
只需手动读取第一行并将其传递给DictReader.
with open('file.csv') as fh:
header = [h.strip() for h in fh.next().split(',')]
reader = csv.DictReader(fh, fieldnames=header)
Run Code Online (Sandbox Code Playgroud)
您需要在 csv 模块中注册自定义方言
csv.register_dialect('MyDialect', quotechar='"', skipinitialspace=True, quoting=csv.QUOTE_NONE, lineterminator='\n', strict=True)
Run Code Online (Sandbox Code Playgroud)
然后在创建 DictReader 时使用方言:
my_reader = csv.DictReader(trip_file, dialect='MyDialect')
Run Code Online (Sandbox Code Playgroud)
这是所有方言选项
Python3版本
with open('file.csv') as fh:
header = [h.strip() for h in fh.readline().split(',')]
reader = csv.DictReader(fh, fieldnames=header)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4553 次 |
| 最近记录: |