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


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]) 만 했는데도 아래와 같은 문제가 발생합니다.

이미지

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

  • 2017년 08월 13일에 작성됨

조회수 187


1 답변


좋아요
0
싫어요
채택취소하기

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(칸)에 개행 문자가 있기 때문인데요. 이걸 해결하려면 관련질문을 참고하세요.

  • 2017년 08월 17일에 작성됨
    ლ( ╹ ◡ ╹ ლ) 쭈물

  • 감사합니다    Junho Lee   2017.8.18 15:05     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close