用于验证CSV文件或类似面向行的数据源中包含的数据的简单库。
csvvalidator的Python项目详细描述
此模块提供了一些简单的实用程序,用于验证csv中包含的数据 文件或其他类似的数据源。
此模块的源代码位于:
https://github.com/alimanfoo/csvvalidator
请通过问题跟踪器报告任何错误或功能请求。
安装
此模块已注册到python包索引,因此您可以执行以下操作:
$ easy_install csvvalidator
…或从http://pypi.python.org/pypi/csvvalidator下载 按常规方式安装:
$ python setup.py install
如果您想获得更大的优势,请克隆源代码存储库:
$ git clone git://github.com/alimanfoo/csvvalidator.git $ cd csvvalidator $ python setup.py install
用法
<> > > cvValueSt>/cTIT>类是所有验证对象的基础 能够验证CSV数据。可以使用csvvalidator类动态构造验证器,例如:
import sys import csv from csvvalidator import * field_names = ( 'study_id', 'patient_id', 'gender', 'age_years', 'age_months', 'date_inclusion' ) validator = CSVValidator(field_names) # basic header and record length checks validator.add_header_check('EX1', 'bad header') validator.add_record_length_check('EX2', 'unexpected record length') # some simple value checks validator.add_value_check('study_id', int, 'EX3', 'study id must be an integer') validator.add_value_check('patient_id', int, 'EX4', 'patient id must be an integer') validator.add_value_check('gender', enumeration('M', 'F'), 'EX5', 'invalid gender') validator.add_value_check('age_years', number_range_inclusive(0, 120, int), 'EX6', 'invalid age in years') validator.add_value_check('date_inclusion', datetime_string('%Y-%m-%d'), 'EX7', 'invalid date') # a more complicated record check def check_age_variables(r): age_years = int(r['age_years']) age_months = int(r['age_months']) valid = (age_months >= age_years * 12 and age_months % age_years < 12) if not valid: raise RecordError('EX8', 'invalid age variables') validator.add_record_check(check_age_variables) # validate the data and write problems to stdout data = csv.reader('/path/to/data.csv', delimiter='\t') problems = validator.validate(data) write_problems(problems, sys.stdout)
对于更复杂的用例,还可以使用子类csvvalidator来定义 特定数据源的可重用验证程序类。
对于本模块提供的所有功能的完整说明, 请参见源代码存储库中的example.py和tests.py模块。
注释
注意,csvvalidator模块打算与 标准的pythoncsv模块。csvvalidator模块不会 验证csv文件的语法。相反,csvvalidator模块可以是 用于验证任何面向行的数据源,如 csv.reader对象。
即,如果要验证csv文件中的数据,必须首先构造 使用标准pythoncsv模块的csv阅读器,指定适当的 方言,然后将csv读取器作为数据源传递给 csvvalidator.validate或csvvalidator.ivalidate方法。