我必须将一个Excel文件上传到Terrace中。所以我选择了需要上传的选项卡,并将其保存为CSV文件。(在多次尝试通过Terrace Studio GUI使用FastLoad失败后,我被建议使用Terrace BTEQ。)
问题:
1.某些行的列数多于其他行。
1.在使用BTEQ时,有些字符被误解。
1.我可以打印出一些计数,但我最终得到的错误UnicodeDecodeError: 'charmap' codec can't decode byte ... in position ...: character maps to <undefined>
我不知道该怎么办。
有人建议我使用Python来计算每行中的逗号/分隔符,以找到列太多的逗号/分隔符并修复它们,但每行有125,000行和66列。(这是非常脏的数据,是手动输入的,没有使用Excel的数据验证选项。)
如果我能只打印出需要修复的行的行号(而不是行号),并使用条件语句在现场修复它们,那就最好了。
我现在拥有的代码将打印文件路径,然后是新行中每行的列数,然后停止处理并返回UnicodeDecodeError。
代码:
with open('Data.csv', 'r') as csv_file:
for line in csv_file:
print( line.count(','))
字符串
1条答案
按热度按时间tjrkku2a1#
我建议你从日志方法开始,有点像被建议的那样。如果“用条件语句当场修复它们”意味着停止阅读/导入这一行,让你在恢复阅读/导入之前以某种方式更改它.
你只需要打印出不符合预期的行,因为你认为数据包含66列,所以只需要打印出不符合预期的行。
对于应该有3列的CSV:
字符串
生成报告,如:
但对于更大的数据:
型
尝试把坏的一面压缩成范围可能更有帮助,比如: