Python CSV模块:如何在同一文件中考虑多个表?

时间:2013-07-23 20:53:47

标签: python excel csv

我有一个转换为CSV的Excel文件。有几个表,每个表用空行分隔。将Excel文件转换为CSV后,我看到每个空行由一行逗号表示,每个列/字段元素都有一个逗号。 CSV模块(或其他一些Python模块)可以从这些信息中考虑多个表吗?如果没有,是我唯一的选择在转换之前在Excel中手动将表分成不同的文件?

我知道CSV模块会将每一行变成一个列表。我想将一个表作为自己的列表,并将其作为列表中的所有行。每个表都有第一行作为字段。字段可以在表与表之间不同,并且字段的数量也可以不同。

2 个答案:

答案 0 :(得分:1)

你可以尝试一下:

def extract_table(f):
    table = []
    for line in f:

        if not len(line):
            # Table delimeter reached
            break

        fields = line.split(',')
        table.append(fields)
    return table

def main():

    with open("myfile.csv") as f:
        while True:
            table = extract_table(f)

            if not len(table):
                # No table found, reached end of file
                break

            # Do something with table
            # ...

答案 1 :(得分:0)

当然,以这种方式读取数据很容易。你必须决定什么构成分隔符行(是否足以检查第一列是否为空,或者你必须检查所有列是否为空?)假设只是第一行(并且为了清晰起见是额外的冗长): / p>

 rdr = csv.reader(open(filename))

 tables = []
 this_table = []
 tables.append(this_table)
 for row in rdr:
      if row[0] is None:
         this_table = []
         tables.append(this_table)
      this_table.append(row)

结果是一个名为tables的列表。每个条目都是包含一个表的数据的列表。表中的每个条目都是一个包含一行列值的列表。