2013-07-23 3 views
0

두 가지 유형의 CSV 파일이 있고이를 병합하고 싶습니다. 이렇게하려면 각 행의 특정 값을 찾아서 제거하십시오. 특정 값이있는 경우 CSV 파일의 셀 제거

나는 list.Index 또는 list.Remove에게 기능을 사용하여 시도했지만 값이 특정 파일에없는 경우 오류가 발생합니다. 나는 값 ""로 세포를 찾으려

CSV 1950 1300 1180 48 48 400 2 PASS  0 51:31.5 
CSV 3270 2500 1950 1300 1180      48 

와 " :

예를 들어, 두 개의 행이 있습니다 (I 더 나은 디스플레이 행의 나머지 부분을 잘라) 두 파일이 정렬됩니다 있도록 ... "내가 그렇게 다시 빈 셀을 제거 할 그 후 - 그들이 정렬됩니다은 ...

당신은 내가이 작업을 수행하는 방법을 이해하는 데 도움 주실 래요?

감사합니다, Nimrod.

+0

어떻게 당신이에 값을 몇 가지 조건이 요소를 삭제 넣고 병합 것 파일 정렬? 처음에는'3270'과'2500'으로 세포를 만들고 모든 것을 삭제하고 있습니까? 그들은 언제나 '3270'과'2500 '이 될 것인가? –

+0

CSV 파일 상단에 열 이름이있는 행이 있습니까? – ijmarshall

+0

파일의 첫 번째 몇 행이 같지 않을 수 있습니다. 데이터 행은 파일 유형이 하나이고 다른 유형이없는 셀 쌍을 제외하면 동일합니다. - 예를 들면. * 3270 * 및 다른 값은 파일 유형 중 하나에 있으며 다른 파일에는 없습니다. – NimrodB

답변

2

정확하게 달성하기를 원하는 것이 무엇인지 정확하게 말하기는 어렵지만, 이것이 시작되어야한다고 생각합니다.

#!/usr/bin/env python 

import csv  

myfile = '/path/to/untitled.csv' 
newfile = '/path/to/untitled_new.csv' 

reader = csv.reader(open(myfile)) 

remove_me = {'3270','2500'} 

print('Before:') 
print(open(myfile).read()) 

for row in reader: 
    new_row = [] 
    for column in row: 
     if column not in remove_me: 
      new_row.append(column) 

    csv.writer(open(newfile,'a')).writerow(new_row) 

print('\n\n') 
print('After:') 
print(open(newfile).read()) 

출력 :

Before: 
1950,1300,1180,48,48,400 
3270,2500,1950,1300,1180 



After: 
1950,1300,1180,48,48,400 
1950,1300,1180 

당신은 같은 목록을 통해 반복하는 동안 당신이 list.remove를 사용하지 않는 있는지 확인하거나 가능성이 엉망 자신을거야. 위의 코드는 if 테스트를 통과 한 값 (열을 이 아니라이 제거하려는 값 중 하나)을 새 목록으로 복사 한 다음 새 .csv 파일에 새 목록을 작성하는보다 안전한 전략을 사용합니다 .

당신이하고자하는 일은 더 많거나 적습니까?

공백 셀을 제거하려면 ''remove_me에 추가 할 수 있습니다.

+0

나는 길을 좋아했습니다. 나는 그것을 해결하기 위해 다음을 수행했다 : 'NewRow [1] == '3270': del NewRow [1 : 3] del NewRow [4 : 9] del NewRow [6]' – NimrodB

0

나는 루프 파일에서 각 값을 당신을 조언 한 다음 새 출력 파일

1 단계 읽기 파일

import sys 
import csv 
updatedlist = [] 
for val in csv.reader(open('input1.csv' , 'rb')) : 
    print val 

## val will be a list of each row , 
## So in this case you will have to 
## select the elements while you will be looping 
## then replace or removing the elements you want to remove 
## and make a new updated list which you will then have 
## to append to a new output.csv file 
## then do the same the to the other file and append to the output.csv file  


for Values in updatedlist : 

##looping thru the values and then make a string of the values separated by commas 
     f = open('output.csv' , 'a') 
     f.writelines(updatestring) ##updated list with a string of comma separated values 
     f.close() 
관련 문제