【发布时间】:2013-08-02 19:21:05
【问题描述】:
好吧,我正在使用 python 开源包 https://pypi.python.org/pypi/CsvSchema/1.1.0 通过我设置的规则进行 csv 验证,它似乎有一些非常过时的文档。我正在检查文件中的每个字段并检查长度,如果它在规则中声明的最小长度/最大长度内,它应该通过。奇怪的是它没有。代码 sn-p 在这里:
class TestCsvStructure(BaseCsvStructure):
a = StringColumn(blank = True, min_length = 0, max_length = 1000,)#4 bytes
b = StringColumn(blank = True, min_length = 1, max_length = 3,)
c = StringColumn(blank = True, min_length = 0, max_length = 7,)
d = StringColumn(blank = True, min_length = 0, max_length = 3,
e = StringColumn(blank = True, min_length = 0, max_length = 8,)
f = StringColumn(blank = True, min_length = 0, max_length = 255,)
g = StringColumn(blank = True, min_length = 0, max_length = 255,)
h = StringColumn(blank = True, min_length = 0, max_length = 255,)
现在当我通过我的文件时,第 1 列只有 3 个字符,但它仍然会产生错误:
进纸数 = 5 [u'第5行第1列:值不能超过3',u'第5行第2列:值不能超过7',u'第5行第3列:值不能long than 3', u'Line 5, column 4: 值不能超过 8', u'Line 5, column 18: 值不能长于2', u'Line 5, column 19:值不能长于 ...
[“[u'115133']”,“[u'chg']”,“[u'Female']”,“[u'No']”,“[u'Active']”,“ [u'Primary Name']"、"[u'']"、"[u'']"、"[u'Silvi']"、"[u'']"、"[u'Ojuland']" , "[u'']", "[u'Relative or Close Associate (RCA)']", "[u'']", "[u'']", "[u'']", "[ u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u' ']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u''] ", "[u'']", "[u'']", "[u'']", "[u'']", "[u'']", "[u'']", “[u'']”、“[u'']”、“[u'']”、“[u'']”、“[u'']”、“[u'']”、“[ u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u'公民身份']"、"[u'爱沙尼亚']"、"[u'']"、"[u'']"、"[u'']"、"[u'']"、"[u' ']"、"[u'']"、"[u'115131']"、"[u'Daughter']"、"[u'No']"、"[u'']"、"[u '30-Jun-2012']", "[u'']"]
如您所见,第 1 列 = 'chg' 长度为 3 并且应该通过但错误显示 [u'Line 5, column 1: The value can not be long than 3' 。 .
任何对 csvSchema 1.1.0 包有经验的人都可以提供帮助。
【问题讨论】:
-
为什么你有列的值,作为带有单个项目的列表的repr'd版本......例如:
"[u'chg']"(因为那是超过3个字符...... ) ? -
完全正确 - 如果该行是解析器获取的真实输入,则第 1 列不是长度为 3 的“chg”,而是长度为 7 的“[u'chg']”。
-
天啊,我现在觉得自己很愚蠢。我只是浪费了 2 个小时。妈的。
标签: python csv python-2.7 python-3.x