2013-07-25 5 views
0

저는 파이썬에 익숙하지 않습니다. 큰 텍스트 파일에서 여러 개의 CSV 파일을 만들었습니다. 그래서 내 CSV는 아래처럼 보입니다.여러 개의 csv를 파이썬을 사용하여 병합하십시오.

CSV1

ABC 1

DEF 2

GHI 3

CSV2

ABC 4

DEF 5

GHI, 6

등 15 csv 파일까지입니다.

다음과 같은 결합 된 CSV 파일을 만들고 싶습니다.

ABC, 1,4-

DEF, 2,5-

GHI, 3, 6

이 방법에 대한 모든 포인터가 인정된다.

+0

는 지금까지 아무것도 시도? 아니면 심지어 연구? –

+0

'python csv'와 같은 검색어로 google.com을 사용해 보시겠습니까? – woozyking

답변

0

가정의 모든 CSV 파일이 같은 길이이며, 같은 순서로 같은 첫 번째 열을 포함,이 같은 당신을 위해 작동 될 수 있습니다

list_of_files = ['csv1.csv', 'csv2.csv', 'csv3.csv'] 

# Use the first file as a template 
with open(list_of_files[0], 'r') as f: 
    output_text = [line.strip() for line in f] 

# Append the values to the end of the lines 
for fn in list_of_files[1:]: 
    with open(fn, 'r') as f: 
     for i, line in enumerate(f): 
      key, value = line.strip().split(",") 
      output_text[i] += "," + value 

# Dump result to new csv 
with open("result.csv", 'w') as f: 
    f.write("\n".join(output_text)) 
+0

'with'를 사용할 때'f.close()'가 필요 없습니다. 나는 또한'DictReader'를 조사 할 것을 제안한다. –

+0

고마워, 그건 습관의 힘이야. – bcbt

0
import csv 
from collections import defaultdict 

csvs = ["data1.csv", "data2.csv"] 
for file in csvs: 
    for line in csv.reader(open(file)): 
     d.setdefault(line[0], []).append(line[1]) 

with open("result.csv", "w") as f: 
    wrt = csv.writer(f) 
    wrt.writerows([[k] + v for k, v in d.items()]) 
관련 문제