쿼카러버의 기술 블로그
이스케이프 문자 \r 과 \n은 무엇일까? 본문
이스케이프 문자
이스케이프 문자는 특별한 문자를 입력하기 위해 백슬래쉬(\)를 붙이는 문자를 말한다.
이스케이프 문자들 중 많이 쓰이는 것들은 아래와 같다.
\\: 백슬래시
\n: 개행 문자 (라인 피드LineFeed. 다음 행으로 바꿈)
\r: 개행 문자 (캐리지 리턴CarriageReturn. 커서를 행의 앞으로 이동. 잘 사용하지 않는다.)
\t: 탭 문자
\': 작은따옴표 (작은따옴표 안에서 작은따옴표를 쓰고 싶을 때 씀)
\": 큰따옴표 (큰따옴표 안에서 큰따옴표를 쓰고싶을 때 씀 )
위처럼 이스케이프 기호인 백슬래시(\) 뒤에 문자를 적는다.
다른 것들은 쉽게 이해가 되는데,
\r 과 \n은 약간 헷갈리는 부분이 있지 않나 싶어 이 글을 적는다.
요즘에는 \r을 잘 사용하지 않지만,
크롤링을 하다보면 \r이 자주 나타나는 것을 볼 수 있고, 이 또한 처리해주어야 한다.
\r과 \n의 무엇이고, \r과 \n이 같이 쓰여진 경우는 어떤 경우일까?
일단 정의부터 보자면
1) \n : (라인 피드 LineFeed) 커서를 다음 줄로 이동시켜라
2) \r : (캐리지 리턴 CR)커서의 위치를 현재 줄의 맨 앞으로 이동
커서가 뭔말인지,, 잘 이해가 안될 수도 있다.
각각을 예를 들어 설명해보겠다.
\n
\n은 커서를 다음 줄로 넘어가게 하고(엔터를 치고) 뒤에 붙어있는 haha라는 친구를 적어주는 것을 말한다.
\r
위에서 sample2의 string은 asdf앞에 공백이 네칸이 있다. 이를 출력하면 공백이 그대로 출력된다.
하지만 sample3의 string은 asdf앞에 공백 네칸 + \r이 있는데,
\r의 정의대로 커서를 행의 가장 앞으로 이동시키고 그 뒤에 asdf를 적어주기 때문에 공백이
생략되고, asdf만 적히게 된다.
이처럼 \n은 커서를 다음 줄로 보내버리는 것이고, 그 뒤에 문자가 있으면 그 문자를 입력
\r은 커서를 제일 앞으로 보내고 그 뒤에 문자가 있으면 그 문자를 입력시키는 것이다.
그렇다면
\r과 \n을 같이 쓰는 \r\n은뭘까?
커서를 앞으로 보내고 엔터를 친다고 생각하면 되겠다.
가끔씩 C++을 쓰다보면 \n만 쳤을 경우에 문자가 더럽게 출력이 되는 경우가 있는데,
그걸 방지하려고 쓰는 방법인 것 같다. python에서는 자동으로 처리를 해주는 것 같다. 잘 쓰지 않는다.
하지만 정규표현식을 쓰다보면 가끔씩 예외가 발생하지 않도록 이를 사용하기 때문에
크롤링을 하거나 문자를 처리할 때 알아두면 좋은 방법이다.
긴 글 읽어주셔서 감사합니다~
본 글은 다음을 참조한 글입니다.
https://stackoverflow.com/questions/15433188/r-n-r-and-n-what-is-the-difference-between-them
https://docs.python.org/2.0/ref/strings.html
'[Python]' 카테고리의 다른 글
[python] anaconda 가상환경 만들 때 주의사항 (0) | 2022.01.27 |
---|---|
[Python Advanced] Collections 라이브러리 1탄 : Counter (Pythonic하게 Count하는 법) (0) | 2022.01.20 |
파이썬으로 이런것도 가능해?(cross-platform, shell script, 리액트 개발) (pyodide, shellpy, kivy, pythonfire) (0) | 2022.01.01 |
파이썬으로 이메일 보내는 방법 (텍스트 작성) [SMTP] (1/2) (0) | 2019.01.03 |
아나콘다(Anaconda) 및 주피터 노트북(jupyter notebook) 설치법 (0) | 2019.01.02 |