2017-04-01 1 views
0

CSV 모듈을 사용하여 데이터 처리를 처음 사용합니다. 그리고 난 입력 파일 Input Data Set을하고이를 사용하여 파이썬을 사용하여 CSV 파일의 첫 번째 및 마지막 열 덮어 쓰기

`Current Output File

import csv 
path1 = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\charity.a.data" 
csv_file_path =   "C:\\Users\\apple\\Downloads\\Challenge\\raw\\output.csv.bak" 

with open(path1, 'r') as in_file: 
    in_file.__next__() 
    stripped = (line.strip() for line in in_file) 
    lines = (line.split(":$%:") for line in stripped if line) 
    with open(csv_file_path, 'w') as out_file: 
     writer = csv.writer(out_file) 
     writer.writerow(('id', 'donor_id','last_name','first_name','year','city','state','postal_code','gift_amount')) 
    writer.writerows(lines) 

이 가능 (제거 : csv 파일의 처음과 마지막 열에 있습니다 code`. 그리고 출력을 좋아해주세요. Expected OUTPUT(After removing :) 도와주세요.

+0

그럼 우리가이 작업을 수행하기를 원하십니까? 시도한 코드가 있습니까? – Artagel

+0

알림. 'gift_amount' 열은 값에 쉼표 (,)가 있으므로 데이터 세트가 탭 (또는 쉼표가 아닌 다른 것)으로 분리되어야 함을 의미합니다. @Artagel이 말했듯이, 지금까지 해 온 일에 대한 몇 가지 코드를 제공해주십시오. – TasosGlrs

+0

초기 입력은 텍스트 파일이며 형식은 다음과 같습니다. id : $ % : donor_id : $ % : last_name : $ % : first_name : $ % : year : $ % : city : $ % : state : $ % : postal_code : $ % : 선물 금액 : $ : 1 : $ % : 10763 : $ % : Aaron 및 Shirley 가족 재단 : $ % : Aaron : $ % : 2017 : $ % : 뉴욕 : $ % : NY : $ % : 10065 : $ % : 380.00 : csv 파일로 변환됩니다. – user229204

답변

1

처음과 마지막 열에서 ':'을 제거하려는 경우이 방법이 효과적입니다. 귀하의 질문에 코멘트를 달았 기 때문에 데이터 세트에 쉼표 ','가 있기 때문에 데이터 세트를 읽으려면 데이터 세트가 tab (또는 쉼표가 아닌 다른 것)으로 분리되어야합니다.

path1 = '/path/input.csv' 
path2 = '/path/output.csv' 

with open(path1, 'r') as input, open(path2, 'w') as output: 
file = iter(input.readlines()) 
output.write(next(file)) 

for row in file: 
    output.write(row[1:][:-2] + '\n') 

업데이트

그래서 코드를주고 나서, 나는 초기 파일에서 시작하는 전체 과정을 수행하는 작은 변화를 추가했다. 아이디어는 동일합니다. 각 행의 첫 번째 및 마지막 문자를 제외해야합니다. 따라서 line.strip() 대신 line.strip()[1:][:-2]이 있어야합니다.

import csv 
path1 = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\charity.a.data" 
csv_file_path = "C:\\Users\\apple\\Downloads\\Challenge\\raw\\output.csv.bak" 

with open(path1, 'r') as in_file: 
    in_file.__next__() 
    stripped = (line.strip()[1:][:-2] for line in in_file) 
    lines = (line.split(":$%:") for line in stripped if line) 
    with open(csv_file_path, 'w') as out_file: 
     writer = csv.writer(out_file) 
     writer.writerow(('id', 'donor_id','last_name','first_name','year','city','state','postal_code','gift_amount')) 
     writer.writerows(lines) 
+0

위의 코드는 StopIteration 오류가 발생합니다. – user229204

+0

이 코드는 처리 한 후 작성한 .csv 파일에서만 작동합니다. 내 대답에는 처음부터 전체 프로세스를 수행하는 코드를 사용하는 다른 솔루션이 포함됩니다. – TasosGlrs

+0

고마워요 ~ 위의 나를 위해 일했던 것 – user229204

관련 문제