[英]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.