1

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

我知道 CSV 模块会将每一行变成一个列表。我希望一个表成为它自己的列表,并且它包含的所有行都作为列表。每个表都有第一行作为字段。每个表的字段可以不同,字段的数量也可以不同。

4

2 回答 2

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
            # ...
于 2013-07-23T21:58:05.763 回答
0

当然,以这种方式读取数据很容易。您必须决定什么构成分隔符行(检查第一列是否为空就足够了,还是必须检查所有列是否为空?)假设只有第一行(并且为了清楚起见更加详细):

 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)

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

于 2013-07-24T03:48:10.527 回答