input() vs sys.stdin.read()

fogbit picture fogbit · May 19, 2011 · Viewed 28.8k times · Source
import sys
s1 = input()
s2 = sys.stdin.read(1)

#type "s" for example

s1 == "s" #False
s2 == "s" #True

Why? How can I make input() to work properly? I tried to encode/decode s1, but it doesn't work.

Thank you.

Answer

Michael Foukarakis picture Michael Foukarakis · May 19, 2011

If you're on Windows, you'll notice that the result of input() when you type an 's' and Enter is "s\r". Strip all trailing whitespace from the result and you'll be fine.