在pylint的支持下,在python中解析csv文件的最佳方法

时间:2014-10-09 21:38:59

标签: python csv pylint

我正在使用Python(2.7)解析一个逗号分隔的文件,而我却无法用一种优雅的方式来表示字段名称。

这是一个示例文件:

first_field,field2,last_field
1,2,hello
4,5,goodbye

这是一种方法:

fields = ('first_field', 'field2', 'last_field')
report_lines = report.split('\n')
assert report_lines[0] == ','.join(fields)
for line in report_lines:
    values = line.split(',')
    some_function(values[fields.index('first_field')])
    another_function(values[fields.index('last_field')])

实际报告有几十个字段,我经常拼错其中一个字段名称。上面的方法很好,因为如果我错误地键入字段名称,对index()的调用将会提高。我想让pylint抓住我的错别字,所以我想出了这个:

first_field = 'first_field'
field2 = 'field2'
last_field = 'last_field'
fields = (first_field, field2, last_field)

report_lines = report.split('\n')
assert report_lines[0] == ','.join(fields)
for line in report_lines:
    values = line.split(',')
    some_function(values[fields.index(first_field)])
    another_function(values[fields.index(last_field)])

我更喜欢第二种方法,因为拼写错误的字段名称将在pylint-time而不是在运行时捕获。问题是在顶部(即第二种方法的前4行),我必须输入每个字段名称三次而不是一次。

此外,在这两种方法中,为每个字段访问键入fields.index(...)并不理想。

同样,实际报告有许多字段,并且解析它们的代码相当复杂(并且它对许多不同的字段进行了许多引用)。所以我正在寻找上述两种方法的优雅组合,或者我可能错过的另一种方法。我只需要一种声明字段然后访问它们的方法,这样拼写错误的字段名称就会在pylint时捕获而不是在运行时。

请注意,我查看了Python的csv模块,但没有看到任何可以解决这个特定问题的东西,但我当然可能错过了一些东西。

0 个答案:

没有答案