2013-12-23 4 views
1

unstrucutred csv 파일을 반복하려고합니다 (특정 제목이 없음). 파일은 악기로 생성됩니다. 특정 열 값을 가진 특정 행을 선택하고 다른 파일을 만들어야합니다. 다음은 파일 레이아웃의 예입니다.구조화되지 않은 CSV 파일에서 특정 행을 선택하고 Python을 사용하여 다른 파일에 쓰기

,success, (row1) 

1,2,protocol (row2) 

78,f14,34(row3) 

,67,34(row4) 

,f14,34(row5) 

3,f14,56,56(row6) 

'fi4'값을 가진 모든 행을 선택해야합니다. 코드는 다음과 같습니다.

import csv 
import sys 
reader = csv.reader(open('c:/test_file.csv', newline=''), delimiter=',', quotechar='|') 
for row in reader: 
     print(','.join(row)) 

나는이 시점을 넘어 설 수 없습니다.

답변

1

당신은 거의 다 : 그것은 당신이 무엇인지

for row in reader: 
    if row[1] == 'f14': 
     print(','.join(row)) 
+0

가 대단히 감사합니다! – user3130236

0

당신은 단지 확인하고 행이 컬럼의 값을 확인하여 관심 여부 것입니다 여부를 확인하고 볼 필요 ' 다시 찾고. 간단한 if row[1] == 'f14' 조건문을 사용하면이 작업을 수행 할 수 있습니다. 그러나 입력 파일에있는 것처럼 보이는 모든 공백 행에는 오류가 발생하므로 행에 적어도 그 안에 많은 열이 있는지 확인하기 위해 다른 행을 검사 할 필요가 있습니다.

그 행만 포함 된 다른 CSV 파일을 만들려면 모든 체크를 통과 한 각 행을 출력용으로 연 다른 파일에 써야합니다. 행을 출력하는 대신 또는 행 아웃을 출력하는 것 외에 . 다음은 행을 다른 파일에 쓰는 매우 간결한 방법입니다.

(참고 : 표시된 입력 파일에 인용 부호가 없기 때문에 csv.reader() 코드에서 quotechar='|' 코드를 사용한 이유가 확실하지 않으므로 아래 코드에서 제외했습니다. 실제로 그 어떤이 있다면 그것이 될 것이 무엇인지 다시 추가해야 할 수도 있습니다) 이후 'test_file_out.csv' 파일의

import csv 

with open('test_file.csv', newline='') as infile, \ 
    open('test_file_out.csv', 'w', newline='') as outfile: 

    csv.writer(outfile).writerows(row for row in csv.reader(infile) 
            if len(row) >= 2 and row[1] == 'f14') 

내용 :.

78,f14,34(row3) 
,f14,34(row5) 
3,f14,56,56(row6) 
+0

대단히 고마워요, 마르티노.이게 도움이 됐어. – user3130236

관련 문제