簡體   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