2013-07-23 55 views
0

我有一個Excel文件,我轉換爲CSV。有幾個表格,每個表格由一個空行分隔。將Excel文件轉換爲CSV後,我會看到每行由逗號表示的空行,每列/字段元素都以逗號分隔。 CSV模塊(或其他Python模塊)能否從這些信息中解釋多個表格?如果沒有,我的唯一選擇是在轉換之前在Excel中手動將表分成不同的文件?Python CSV模塊:如何解釋同一文件中的多個表?

我知道CSV模塊會將每一行變成一個列表。我想要一張表作爲它自己的列表以及列表中的所有行。每個表都有第一行作爲字段。這些字段可以不同於各個表格,字段的數量也可以不同。

回答

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) 

結果是一個名爲表的列表。每個條目都是包含一個表的數據的列表。表中的每個條目都是包含一行的列值的列表。

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 
      # ... 
相關問題