파이썬3에서 csv파일을 읽어오는데, 행의 끝과 맨 앞에 "이 붙습니다.

조회수 3030회

A.csv 파일에서 행별로 데이터를 읽고, 이를 편집해 B.csv 파일에 저장하는 것이 목표입니다.

이미지

위와 같은 파일이며, 보여지는 부분은 세 번째 열입니다. 파이썬으로 한 번에 세 번째 열만 편집하려고 했는데, 다른 문제가 생겨 일단 엑셀상에서 다른 열을 지운 상태로 테스트중입니다.

한 셀 내에서 있는 여러개의 제보를 각각 분리하고, 줄바꿈 문자를 제거해 B 파일에 저장하고 싶습니다.

[숫자~숫자]#태그 -> 이 부분은 삭제하려고 합니다.

아대숲 #숫자~ -> 이 부분을 기준 삼아 이 뒷 내용을 기록합니다. 이 문장은 기록되지 않습니다.

이하 내용 -> 줄바꿈을 모두 제거하고 한 줄로 B 파일에 기록합니다.

위 기능을 위해서 일단 구현한 코드는 다음과 같습니다.

import csv


originFile = open("test_min_data.csv", "r")
writeFile = open("01forwrting.csv", "w")

lines = originFile.readlines()
txt = []
for n in range(9999):
    txt.append([])
t_line=0
j=0
results = ['']
for n in range(9999):
    results.append('')


for i in range(100): # 범위를 len(lines)로 잡으면 에러, 숫자로 잡으면 안에러. 왜? => 해결: while문의 lines[j+1]이 lines의 인덱스를 초과해서 발생. 오류가 나서 멈추는 것을 try-except문으로 해결.
    print(lines[i])
    '''
    if lines[i][0:5] == "아대숲 #":    # 아대숲 제보를 만나면
        j=i
        try:
            while (lines[j+1][0:5] != "아대숲 #" ): #그 다음 문장이 아대숲 제보문이 아닐 때 까지 txt에 각 행을 쌓음
                txt[t_line].append(lines[j+1])
                j+=1
            t_line+=1
        except:
            continue
    '''

주석처리를 한 부분을 제외하고, print(lines[i]) 만 했는데도 아래와 같은 문제가 발생합니다.

이미지

이 그림처럼 행의 시작, 행의 끝 부분에 각각 "이 붙어서 나오는데 왜 이러는걸까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • python코드에는 문제가 없고요, csv 파일의 문제입니다.

    이미지

    이런 csv파일을 이런 python 코드로 읽으면

    f = open("filename.csv", "r")
    lines = f.readlines()
    
    for line in lines:
        print(line)
    

    결과는 다음과 같습니다.

    csv파일
    
    "line2-1
line2-2
line2-3"
    

    쌍따옴표가 씌여있지요? 이건 cell(칸)에 개행 문자가 있기 때문인데요. 이걸 해결하려면 관련질문을 참고하세요.

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)