AI/Python

[Python] 입력방법 input(), sys.stdin.readline(), strip()

i-moo 2025. 9. 9. 17:25
반응형

1. input() 과 sys.stdin.readline() 차이

  • input() 함수
    • 파이썬에서 표준 입력을 받을 때 기본적으로 쓰는 함수
    • 내부적으로 sys.stdin.readline()을 감싸고 있어서 속도가 조금 느림
    • 입력 개수가 적을 때는 큰 차이 없음
  • sys.stdin.readline()
    • 표준 입력을 훨씬 더 빠르게 읽음
    • 특히 반복문에서 입력을 많이 받을 때 성능 차이가 크게 남
    • \n (개행문자, 줄바꿈 문자)까지 같이 읽음

Java를 사용하고 있다면, Scanner System.out.println 대신 BufferedReader BufferedWriter를 사용할 수 있다.
Python을 사용하고 있다면, input 대신 sys.stdin.readline을 사용할 수 있다.

2. 개행 문자 문제

import sys

s = sys.stdin.readline()
print(repr(s))

Hello!라고 입력하면 'Hello!\n' 줄바꿈이 포함해서 출력된다.

다른 내용이지만 repr()함수를 사용해서 s 출력하면 파이썬 코드에서의 문자열 표현(따옴표, \n 같은 이스케이프 문자까지 포함)을 출력한다.
관련 내용은 하단 링크에서 확인하자.

python str() vs repr() 비교 사진
출처 : 위키독스

 

 

05 str() 함수와 repr() 함수

파이썬 내장 함수 중에는 str()과 repr()이라는, 어찌 보면 매우 비슷한 기능의 함수가 있다. str()과 repr()은 모두 객체를 문자열로 반환하는 함수이다. 하지만,…

wikidocs.net

 

3. 해결방법 : .strip()

s = "  Hello!    World!!!!     " 라고 입력하면 어떻게 출력되는지 확인해보자.

  • rstrip()오른쪽 끝 (right side)의 공백/개행을 제거
    출력 : '  Hello!    World!!!!'
import sys

s = sys.stdin.readline().rstrip()
print(repr(s))
  • lstrip()
    왼쪽 끝(left side)의 공백/개행을 제거
    출력 : 'Hello!    World!!!!     '
  • strip()
    양쪽 끝(left + right)의 공백/개행을 제거
    출력 : 'Hello!    World!!!!'

📌 특정 문자 제거

import sys

s = sys.stdin.readline().rstrip().strip("x")
print(repr(s))

s = "xxHello! xxWorld!!!!xxxx" 라고 입력하면 'Hello! xxWorld!!!!' 출력된다.

입력받은 끝에 \n 개행을 제거해준 후 양쪽 끝에 "x"에 해당하는 문자를 제거해달라고 한 것이다. 가운데 x 문자는 제거되지 않음.
rstrip()도 안해주면 끝에 문자가 \n이 되므로 오른쪽 끝 "xxxx"는 제거되지 않음.

📌 "1 2 3 4 5" int 배열을 입력 받을 때

import sys

s = sys.stdin.readline().split()
print(repr(s))

s = "1 2 3 4 5" 입력 받으면 ['1', '2', '3', '4', '5'] 출력된다.

반응형