sys.stdin.read().strip()
用于从标准输入中读取所有内容并去除首尾的空白字符。
1. sys.stdin.read()
- 作用:从标准输入流中读取所有内容,直到遇到文件结束符(EOF)。在命令行中,EOF 可以通过
Ctrl+D
(Linux/Mac)或Ctrl+Z
(Windows)来输入。 - 返回值:返回一个字符串,包含所有输入的内容,包括换行符。
2. .strip()
- 作用:去除字符串首尾的空白字符(包括空格、换行符等)。
- 返回值:返回处理后的字符串。
组合使用
sys.stdin.read().strip()
的组合使用可以方便地读取所有输入内容,并去除首尾的空白字符,避免输入的首尾空行或空格对后续处理造成干扰。
例子
假设需要读取多行输入,并处理这些输入。
import sys
# 使用 sys.stdin.read() 读取所有输入内容
# 使用 .strip() 去除首尾的空白字符
input_data = sys.stdin.read().strip()
# 按行分割输入内容
lines = input_data.split('\n')
# 第一行是一个整数,表示后续的行数
num = int(lines[0])
# 初始化一个空列表来存储后续的数字对
numbers = []
# 遍历后续的每一行
for line in lines[1:]:
# 将每行的数字分割并转换为整数,然后添加到列表中
pair = list(map(int, line.split()))
numbers.append(pair)
# 打印读取到的数字对,用于验证
for i in range(num):
print(numbers[i])
运行过程
假设输入如下:
3
75 3
53 2
59 2
^Z
PS:Ctrl+Z:在命令行中按下 Ctrl+Z,然后按 Enter 键,表示输入结束。这个组合键会发送一个 EOF 信号给 Python 程序。
程序的运行过程如下:
- 使用
sys.stdin.read()
一次性读取所有输入内容,得到一个字符串:"3\n75 3\n53 2\n59 2"
- 使用
.strip()
去除首尾的空白字符(如果有的话)。在这个例子中,输入本身没有多余的空白字符,所以字符串保持不变:"3\n75 3\n53 2\n59 2"
- 使用
split('\n')
将字符串按行分割,得到一个列表:["3", "75 3", "53 2", "59 2"]
- 第一行
"3"
转换为整数3
,表示后续有 3 行数字对。 - 遍历后续的每一行,将每行的数字分割并转换为整数,存储到列表中。
- 最后打印出读取到的数字对:
[75, 3] [53, 2] [59, 2]