我有一个转换为CSV的Excel文件。有几个表,每个表用空行分隔。将Excel文件转换为CSV后,我看到每个空行由一行逗号表示,每个列/字段元素都有一个逗号。 CSV模块(或其他一些Python模块)可以从这些信息中考虑多个表吗?如果没有,是我唯一的选择在转换之前在Excel中手动将表分成不同的文件?
我知道CSV模块会将每一行变成一个列表。我想将一个表作为自己的列表,并将其作为列表中的所有行。每个表都有第一行作为字段。字段可以在表与表之间不同,并且字段的数量也可以不同。
答案 0 :(得分: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
# ...
答案 1 :(得分:0)
当然,以这种方式读取数据很容易。你必须决定什么构成分隔符行(是否足以检查第一列是否为空,或者你必须检查所有列是否为空?)假设只是第一行(并且为了清晰起见是额外的冗长): / p>
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)
结果是一个名为tables的列表。每个条目都是包含一个表的数据的列表。表中的每个条目都是一个包含一行列值的列表。