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