쿼카러버의 기술 블로그
이스케이프 문자 \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
![](https://blog.kakaocdn.net/dn/cxb43U/btq9KmOUDrd/C5U3j2GO3Kivi8A6KXOT9k/img.png)
위에서 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 |