如何从标准输入(stdin)中匹配指定字符串?代码异常排查
问题原因及解决办法
问题根源
用for word in sys.stdin读取输入时,每一行内容都会包含末尾的换行符(\n)。比如你输入shai并回车,程序拿到的word实际是'shai\n',和你写的'shai'直接比对自然不相等,所以不会触发print('yes')。
解决方法
只需要在判断前处理掉字符串里的换行符即可,两种常用方案:
方案1:用strip()去除首尾空白(推荐,兼容输入前后有空格的情况)
修改判断条件:
if word.strip() == 'shai':
完整修改后的代码:
import sys def loop(): for word in sys.stdin: print(word) if word.strip() == 'shai': print('yes') loop()
方案2:用rstrip('\n')只去掉末尾换行符
如果需要保留输入内容前后的空格,仅去除换行符,可改用:
if word.rstrip('\n') == 'shai':
这样修改后,当输入shai时,就能正确匹配并输出yes了。
内容的提问来源于stack exchange,提问作者shai simchon
相关产品推荐
相关产品推荐

