我想在制表符分隔的csv文件中找到每列的最大长度。 我可以使用以下命令找到一列的最大值:
import csv
oldlen=0
with open(mfile) as csvfile:
test = csv.reader(csvfile,dialect='excel-tab')
for row in test:
if len(row[0]) > oldlen:
newlen = len(row[0])
print (newlen)
如果我希望完成所有列(并计算它们),我可以手动更改row [],但我希望学习,所以我尝试了这个:
with open(mfile) as csvfile:
test = csv.reader(csvfile,dialect='excel-tab')
ncol=len(test[0])
for column in test:
for row in test:
if len(row[column]) > oldlen:
newlen = len(row[0])
print (column,newlen)
当然,这不会产生程序感。但它表明,我希望,我的意图是什么。我必须先做列,这样才能在所有行中获得每列的最大长度。
答案 0 :(得分:1)
您可以使用dict
存储列号 - >最大长度查找,并通过循环遍历每一行的每一列来为其分配。
lengths = {}
with open(mfile) as csvfile:
test = csv.reader(csvfile, dialect='excel-tab')
for row in test:
for colno, col in enumerate(row):
lengths[colno] = max(len(col), lengths.get(colno, 0))
列数为len(lengths)
,每个列的最大长度可以lengths[0]
作为第二列的第一列lengths[1]
访问...
答案 1 :(得分:0)
您可transpose the rows into columns使用zip()
功能:
with open(mfile) as csvfile:
test = csv.reader(csvfile, dialect='excel-tab')
columns = list(zip(*test))
然后获取每列的最大值:
for col in columns:
print(max(col))