본문 바로가기
컴퓨터관련/Python

python에서 텍스트파일 읽기2

by 빛과 어둠사이 2020. 5. 22.
728x90
반응형
SMALL

이번에는 python에서 

텍스트 파일 읽기

두번째 정리를 해보려고 합니다.


지난번에 txt파일 읽을 때

문제가 있었던 것들에 대해서

조치하는 방법을

정리해보려고 합니다.


지난번에 하면서

문제가 있었던 것은

총 2가지가 있습니다.



1. \ufeff 가 맨 앞에 노출

2. \n이 인식되어 줄바꿈까지 인식


위 2가지 문제에 대해서

조치방법을

정리해보려고 합니다.


그리고 우선 해당 건 조치방법을

정리하기 위해서

텍스트 파일은

기존에 썼던 것을 사용하려고 합니다.

기존에 썼던 텍스트 파일은

아래처럼 되어있습니다.



위처럼 되어있는 텍스트파일을 가지고

조치하는 방법을

정리해보고자 합니다.



1. \ufeff

우선 앞에 \ufeff 가 들어가졌을 때

조치하는 방법입니다.

이것은 txt 파일 뿐 아니라

csv 파일을 가져오거나 할 때도

동일한 증상이 나올 수 있습니다.


이 때, 동일한 방법으로

처리를 해주시면 되십니다.



우선, 기존에 어떻게 했었는지

확인해보도록 하겠습니다.


f = open("D:/python/test.txt", 'r', encoding='UTF-8' )
rd = f.readlines()

print(rd)

f.close()


위처럼 코딩을 하였습니다.

그리고 실행을 하면

결과는 아래처럼 나오게 됩니다.



위처럼 \ufeff 가 나오는 것을

확인할 수 있습니다.


이를 해결하기 위해서는

인코딩 방식을 수정해주시면 되십니다.

기존에 UTF-8에서

UTF-8-SIG 로 수정만 해주시면 되십니다.


실제 사용 예제는 다음과 같습니다.


f = open("D:/python/test.txt", 'r', encoding='UTF-8-SIG' )
rd = f.readlines()

print(rd)

f.close()


위와 같이 해주시면 되십니다.

아래 이미지의 네모친 부분처럼

저 곳만 수정을 한 것입니다.



그리고 실행을 하면

결과는 다음과 같이 나오게 됩니다.



위처럼 \ufeff 가 없어진 것을

확인할 수 있습니다.






2. \n 개행문자

이번에는 개행문자인 \n에 대해서

정리를 해보도록 하겠습니다.


1번 사항에서 확인한 이미지를 보면

\n이 포함되어 있는 것을

확인할 수 있습니다.


그래서 출력을 하거나 다른 용도로 사용을 하게 되면

\n으로 인해서

줄이 바뀌게 됩니다.

그리고 해당 라인이 종료가 되어서 또 줄이 바뀌게 되는 것입니다.


그래서 지난번에 정리했을 때,

한줄씩 더 떨어져 있던 것을

확인할 수 있었습니다.


그래서 이번에는 개행문자인

\n을 없애는 방법을

정리해보도록 하겠습니다.


제가 아는 방법은 총 3가지가 있습니다.

다른 방법이 있을 수도 있으나,

저는 우선 3가지만 알고 있기 때문에

3가지 상황에 대해서

정리를 해보도록 하겠습니다.




2-1. rstrip 함수

첫번째는 rstrip 함수를 이용하는 것입니다.

rstrip 함수는 가장 오른쪽 문자를 확인해서

삭제를 해주는 것입니다.


rstrip 함수에 대한 자세한 내용은

추후에 다시 정리를 해보도록 하겠습니다.

우선 지금은 사용방법만 정리를 해보도록 하겠습니다.

rstrip("\n")을 해주면 됩니다.

그러면 가장 오른쪽에 \n이 있으면

삭제를 해주는 것입니다.



실제 사용 예제는 다음과 같습니다.


f = open("D:/python/test.txt", 'r', encoding='UTF-8-SIG' )
rd = f.readlines()

print(rd)

for i in rd :
    print(i.rstrip("\n"))
    
f.close()


위처럼 코딩을 해주시면 되십니다.

그리고 실행을 하면

결과는 다음과 같이 나오는 것을

확인할 수 있습니다.




위처럼 나오는 것을

확인할 수 있습니다.


맨 처음에 readlines로 가져왔을 때 보면

\n이 있는 것을

확인할 수 있습니다.

그런데 rstrip 함수를 이용해서

\n을 지우고 난 다음에는

없어지고,

그래서 지난번과 다르게 한줄이 더 띄워지지 않은 것을

확인할 수 있습니다.




2. end

end는 종료문자를 변경해주는 것입니다.

기본적으로는 줄바꿈을 종료문자로 인식을 하게 되어있습니다.

이 문자를 변경해주는 것입니다.

실제 사용 예제는 다음과 같습니다.


f = open("D:/python/test.txt", 'r', encoding='UTF-8-SIG' )
rd = f.readlines()

print(rd)

for i in rd :
    print(i,end="")

f.close()


위처럼 해주시면 되십니다.

그리고 실행을 하면

결과는 다음과 같이 나오게 됩니다.



위처럼 나오게 됩니다.

종료문자가 변경이 되어서 

한줄 추가적으로 띄워지는 것이 없어지는것을

확인할 수 있습니다.




3. replace 함수

마지막으로는 replace 함수를 이용하여

\n 개행문자를 삭제해 주는 것입니다.

실제 사용 예제는 다음과 같습니다.


f = open("D:/python/test.txt", 'r', encoding='UTF-8-SIG' )
rd = f.readlines()

print(rd)

for i in rd :
    print(i.replace("\n", ""))

f.close()


위와 같이 해주시면 되십니다.

\n을 삭제해주는 것입니다.


위와 같이 소스를 작성하여

실행을 하면

결과는 다음과 같이 나와집니다.



위처럼 나와지는 것을 확인할 수 있습니다.

\n이 사라졌기 때문에

기본적으로 한 라인을 읽어오고,

그 다음에 줄이 바뀌는 것으로

쓸데없이 줄이 한번 더 바뀌는 것은

없어진 것을

확인할 수 있습니다.





\n 개행문자를 없애는 방법으로

저는 총 3가지 방법을

정리해보았습니다.


저는 위 3가지 방법 중

첫번재 방법을 제일 추천합니다.

물론, 2,3번 방법으로도 해결은 가능합니다.

하지만 1번의 경우에는 맨 마지막 문자가 \n 개행문자일 때문에

삭제하는 것이기 때문에

제일 안정적일 것으로 생각이 됩니다.




오늘은 파이썬에서 텍스트파일 읽기

두번째를 정리해보았습니다.

오늘은 \ufeff 삭제와

\n 개행문자 삭제에 대해서

정리를 하였습니다.


필요에 따라서,

원하시는 방법으로 사용을 해주시면 되실 것 같습니다.





Do it! 점프 투 파이썬:이미 200만명이 이 책으로 프로그래밍을 시작했다!, 이지스퍼블리싱

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



728x90
반응형
LIST