繁体   English   中英

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

[英]Python CSV module: How can I account for multiple tables within the same file?

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

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

您可以尝试一下:

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
            # ...

当然,以这种方式读取数据很容易。 您必须决定什么构成分隔符行(检查第一列是否为空是否足够,还是必须检查所有列是否为空?)假设仅第一行(为清楚起见,要特别冗长):

 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)

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM