跳转到主要内容

一个用于验证CSV文件或类似行方向数据源中数据的简单库。

项目描述

此模块提供了一些用于验证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

用法

CSVValidator类是所有能够验证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模块旨在与标准的Python csv模块一起使用。csvvalidator模块不会验证CSV文件的语法。相反,csvvalidator模块可以用于验证任何行方向数据源,例如由csv.reader对象提供的源。

例如,如果您想验证CSV文件中的数据,您首先需要使用标准的Python csv模块构建一个CSV读取器,指定适当的方言,然后将CSV读取器作为数据源传递给CSVValidator.validateCSVValidator.ivalidate方法。

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分布

csvvalidator-1.2.tar.gz (9.9 kB 查看哈希值)

上传时间 源代码

由以下组织支持