2016-10-04 2 views
0

저는 Python을 처음 사용하지만 "|"로 구분 된 데이터가 포함 된 텍스트 파일을 읽는 데 문제가 있습니다. 구분 기호로 사용합니다. 파일을 CSV 형식의 열로 분리하는 방법은 무엇입니까?파이썬 | 구분 된 텍스트 파일을 CSV 형식으로 변환

import csv 
my_file_name = "NVG.txt" 
cleaned_file = "cleanNVG.csv" 

with open(my_file_name, 'r') as infile, open(cleaned_file, 'w') as outfile: 
    data = infile.read() 

    data = data.replace("|","") 
    outfile.write(data) 

이 코드는 | 공백에을 넣으십시오. 그러나 모든 데이터는 이제 하나의 열에 있습니다. 올바르게 서식을 지정할 수 있습니까? 미리 도움을 주셔서 감사합니다.

+2

왜 |를 제거 하시겠습니까? 그게 당신의 구분 기호라는 것을'csv'에게 말하지 않는 것이 어떻습니까? 즉,'csv.reader (infile, delimiter = '|')' – FamousJameous

답변

5

의 사용을 만드는 csv module은 실질적으로 임의 구분하여 CSV 파일을 읽을 수 있습니다.

with open(my_file_name, 'r', newline='') as infile: 
    for line in csv.reader(infile, delimiter='|'): 
     # do stuff 

당신이 정말로 파일을 포맷 할 경우, csv.writer 직접 사용할 수 있습니다 : 당신이 구분을 제거하는 대신 때문에 접근이 작동하지 않습니다

with open(my_file_name, 'r', newline='') as infile, open(cleaned_file, 'w', newline='') as outfile: 
    writer = csv.writer(outfile) 
    for line in csv.reader(infile, delimiter='|'): 
     writer.writerow(line) 

주 그것을 대체하십시오. data.replace("|","")은 각 |을 빈 문자열로 바꿉니다. 즉 "foo|bar""foobar"이됩니다. 이전 분리 기호를 으로 바꾸어야합니다 (예 : data.replace("|", ",").

+0

Ohh Okay !!! 감사! 데이터는 이제 열에 있지만 행 뒤에 빈 행이 남습니다. 그래서 행 1에는 데이터가 있고 행 2는 비어 있고 행 3에는 데이터가 있고 행 4는 비어있는 등 .... 왜 그렇게하고 있습니까? – Cesar

+0

@Cesar Writer = csv.writer (outfile, lineterminator = "\ n")' –

+0

으로 * writer * 객체를 정의하십시오. ** newline = '** **은 엉망이되었습니다. 이것은 완벽하게 작동했습니다! – Cesar

1

코드를 사용하는 가장 간단한 방법은 "|" ","제거 "|"

data = data.replace("|", ",") 
1

당신은 csv 모듈을 가져 오는, 그러나 그것을 사용하고 있지 않습니다. csv.reader

with open(my_file_name, 'r') as infile, open(cleaned_file, 'w') as outfile: 
    reader = csv.reader(infile, delimiter='|') 
관련 문제