파이썬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(칸)에 개행 문자가 있기 때문인데요. 이걸 해결하려면 관련질문을 참고하세요.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력