티스토리 뷰

====================질문========================



test.csv 라는 파일을 읽어서 테스트.csv 라는 새로운 파일을 만드는 코드입니다.

다른 부분은 삭제하고 문제가 되는 부분만 올려봅니다. 결과적으로는 다른 방법으로 해결을 했는데, 이해가 안가는 부분이 있어 질문드립니다.

다음과 같이 작성시 원본파일의 레코드들은 아무런 공백도 없으나 새로운 파일에서 모든 레코드 뒤에 \n가 붙어 레코드의 길이를 카운트하면 원 값보다 더 길게 나옵니다.

값을 세는 코드는 따로 작성했지만 밑의 코드에서 어느 부분 때문에 \n 가 붙는지 궁금합니다.

file='C:/test.csv'
with open('C:/테스트.csv','w',newline='') as testfile:
    csv_writer=csv.writer(testfile)
    with open (file,'r') as infile:
        for line in infile:
            lst=[line]
            csv_writer.writerow(lst)

======================답변========================

질문하신 분의 의도는 보이지 않던 /n이 어디서 등장했으며, /n을 제외하고 카운트가 되어야 하는게 아니냐라는 것 같습니다.

하지만 라인피드(/n)는 보이지만 않고 기본적으로 존재하며 단어의 수를 세면 카운트 되는 것이 정상입니다.

예시로 보여드리면 다음과 같습니다.

#test.csv 내용은 a입니다. b입니다. c입니다. 
#한줄씩 띄어져 있는 상태입니다.
with open('C:/Users/CEO/Desktop/test.csv','r') as testfile:    
    for line in testfile :
        a=line
        print(len(a),type(a),a)


#결과값은 다음과 같습니다.
>> 6 <class 'str'> a입니다.
>> 6 <class 'str'> b입니다.
>> 6 <class 'str'> c입니다.

a입니다. 를 풀어보면 a, 입, 니, 다, . 이렇게 다섯개로 보입니다. 하지만 len이 6이 되는 이유는 /n도 카운트가 되기 때문입니다.

그래도 잘 모르겠다하시면

 print(a[0])
 print(a[1])
 print(a[2])
 print(a[3])
 print(a[4])
 print(a[5])

를 해보시면 /n이 값으로 존재한다는 사실을 알 수 있습니다.








댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함