多个CSV Python排序

时间:2012-10-17 11:31:25

标签: python sorting

感谢您的帮助!我在代码中达到了这一点。

import glob
import csv
import sys
import array

x=1
signs=array.array('i',(0,)*31) 
files = glob.glob('./*.csv')
file = open("all.csv", 'w') 

for row in files: 
    if x<30: 
        signs[x]= x 
        x=x+1 

print (signs[x])
file.close()

我在打印整个阵列时遇到问题。正如我所说,模型中有29个文件,每个文件有30个值:
                    1,2
                    2,9
                    3,20
                    4,6
                    5,2
没有特定的顺序或任何东西,数字会重复。我需要打印出数字,其中有多少实际上已经重复了。我似乎创建文件all.csv但它似乎是空的。我是python的新手,请不要愤怒。我现在搜索了大约8个小时(包括我删除的前一个代码块),但我似乎卡住了。

1 个答案:

答案 0 :(得分:1)

一个选项:迭代每个文件中的每个数字并递增存储在字典中的计数器。打印出按字典键排序的结果(这是csv文件中遇到的数字)。

import csv, glob, sys

from collections import defaultdict

files = [open(f) for f in glob.glob('user./[1-29].csv')]
#files = [open('input1','r')]
counts = defaultdict(int)

for f in files:
    r = csv.reader(f)
    for line in r:
        for num in line:
            counts[int(num)] += 1

for key,val in sorted(counts.items()):
    print key, val