【发布时间】:2021-11-11 14:41:51
【问题描述】:
所以,我遇到了一个编码问题(duh),它涉及 python 中的许多不同组件(读取 .csv,将值提取到列表中,然后操作这些单独的值)
所以当我执行程序时,我的代码确实可以工作,但是,我期望看到的数字与输出的数字不匹配。为了确定,我进行了验证检查,并且我关闭了大约 800 个条目....除非我遗漏了一些东西 - 我不知道为什么。
因此,此 .csv 中有 1213 行,每行中有 6 个值,以空格分隔。 即 - A1 的值为 01 02 03 04 05 06 A2 的值为 07 08 09 10 11 12 等... 每行有 6 个值,我总共应该有 7278 个单独的值。
但是,当我执行我的代码并对生成的列表进行计数时,我总共得到 6409 个。这是 869 个值的差异。除非我在计数的地方遗漏了一些东西,否则我无法弄清楚丢失的 869 在哪里。是计算我列表中的空格和逗号吗?
现在 - 进入代码:
with open('hoursWorked.csv', newline='') as inputfile:
for row in csv.reader(inputfile):
pwrNumList.append(row[1])
# remove the top title of hours worked in csv file
pwrNumList.pop(0)
# Split the six values in each cell and create a separated number as a seperate value that is in between a space bar
pwrNumSplitLst = [item for sublist in [item.split(" ") for item in pwrNumList] for item in sublist]
print (len(pwrNumSplitLst)) #<---This value is coming out to 6409 when it should be 7278 (1213 * 6)
有什么想法吗?
【问题讨论】:
-
尝试从读取的数据(格式相同)重新创建 CSV 文件,并使用差异工具找出缺少哪些行。然后,您可以进一步检查这些内容。
-
我曾尝试复制您的问题,但由于该行只有 1 个元素而导致代码中断,并且 row[1] 引发了异常。我已将其更改为 row[0],然后我得到了正确的输出 7278。
-
提供文件的前几行以确保我们理解格式。听起来它有一个标题行,例如
Col1,Col2和A1,01 02 03 04 05 06、A2,07 08 09 10 11 12之后的 1213 行,对吗?我会添加检查len(item.split(' ')) == 6的代码,因为每一行的长度都不能正确。