【问题标题】:Len() problems with csvSchema 1.1.0csvSchema 1.1.0 的 Len() 问题
【发布时间】: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


【解决方案1】:

您是否以这种形式传递参数:TestCsvStructure([e1, e2,.., en], no_line) ?

其中 e 是元素,no_line = CSV 文件中的当前行数。

【讨论】:

  • 不,正如您在我的代码中看到的 a,b,c... 是参数(csv 行中的字段/列)。我为每个字段定义规则,然后在 csv 中逐行进行
  • 当您说“我通过我的文件”时可以更准确吗?你究竟是如何传递你的文件的?
  • 好吧,我解决了它只是 unicode 使长度更大。我的错,还是谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-11
  • 2015-09-22
  • 2016-06-04
相关资源
最近更新 更多