python - 检查 CSV 每行中的列数

标签 python performance csv export-to-csv

我有以下 Python 代码:

import os
import csv
import sys

g = open('Consolidated.csv', "wb")
for root, dirs, files in os.walk('D:\\XXX\\YYY\\S1'):
    for filename in files:
            pathname = os.path.join(root, filename)
            symbol = filename.rpartition('_')[-1].rpartition('.')[0]
            reader = csv.reader(open(pathname, 'rU'))
            writer = csv.writer(g, delimiter='\t', quotechar='"', quoting=csv.QUOTE_ALL)

            for row in reader:
                row.insert(0, symbol.upper())
                if len(row[2]) == 3:
                    row[2] = '0'+row[2]
                writer.writerow(row)

基本思路是我在 S1 中有几个 CSV 文件,我需要将它们合并到一个大的 CSV 文件中。这些文件以一种有趣的方式命名,这导致了代码中的分区和行操作。

这段代码工作正常,但我的问题如下:如何检查 CSV 文件每一行中的列数?一个例子:如果一个输入的 CSV 文件是以下格式,预计有五列:1,2,3,4,5,代码将显示“1”“2”“3”“4”“5”(由制表符分隔)在合并文件中。现在,无论出于何种原因,CSV 文件中的一行条目都类似于:6、7、8。所以它突然停止而没有填充所有列。在这种情况下,我希望代码忽略这一行并且不在合并中产生“6”“7”“8”。

有人可以提供有关如何执行此操作的代码吗?对于输入 CSV 中的每一行,我想在对其进行操作之前检查它是否是整行。

如有任何帮助,我们将不胜感激。

热烈的问候。

最佳答案

len(row)

将给出行中的列数。

你可以做到

for row in reader:
    if not len(row)<desired_number_of_columns:
        # process the row here

例如,如果您的 csv 文件如下所示

1,2,3,4,5
a,b,c,d,e
l1,l2
d,e,f,g,h

运行

import csv
reader = csv.reader(open("csvfile.csv","r"))
for row in reader:
    if not len(row)<5:
        print(" ".join(row))

将产生输出

1 2 3 4 5
a b c d e
d e f g h

忽略长度为 2 的行。

关于python - 检查 CSV 每行中的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34715410/

相关文章:

performance - 如何在 theta 证明中找到常数 c1、c2 和 n0?

python - 按两个不同的键对字典列表进行排序

python 多处理不起作用?

python - 在 numpy 数组的元素之间插入零

java - IndexOf 的正则表达式或字符串操作?

php - usort 按长度优化排序字符串

java - 与 Java : How to import an arbitrary . csv 文件中的文件实例函数混淆到 mysql 而不是特定文件?

mysql - 在重复键更新时将 CSV 导入 MySQL

python - 打开扭曲套接字客户端的 Django 命令留下空闲数据库连接

python - matplotlib set_xlim() 和 set_ylim() 的轴独立版本?