Python 3中如何读取输入文件特定部分并存储到对应变量?
如何读取输入的特定部分并存储到变量
我来帮你解决这个问题——你遇到的核心问题是对input()函数的理解有点偏差:input()每次只会读取一行输入,所以你用input().splitlines()只能处理第一行内容,自然拿不到后面的4行。下面分两种常见场景给你具体的解决方案:
场景1:从控制台(标准输入)读取
方法1:逐行读取(简单直接)
先读取第一行拆分出整数,再循环读取后续4行存入列表:
# 读取第一行的两个整数 x, y = map(int, input().split()) # 用列表推导式读取接下来的4行,strip()可选,用于去除每行末尾的换行符 strings = [input().strip() for _ in range(4)]
执行后,strings就会是包含A、B、C、D的列表,顺序和输入完全一致。
方法2:一次性读取所有行(更灵活)
如果担心输入里有空行或者行数不确定,可以借助sys.stdin一次性读取所有内容:
import sys # 读取所有行,过滤空行并去除每行的换行符 all_lines = [line.strip() for line in sys.stdin if line.strip()] # 提取第一行的x和y x, y = map(int, all_lines[0].split()) # 提取接下来的4行(索引1到4,左闭右开) strings = all_lines[1:5]
场景2:从本地输入文件读取
如果你的数据是存放在本地文件里的,直接打开文件处理更稳妥:
# 用with语句自动管理文件打开/关闭,避免资源泄漏 with open('你的输入文件名.txt', 'r', encoding='utf-8') as f: # 读取所有行并处理换行符 all_lines = [line.strip() for line in f] # 解析第一行的整数 x, y = map(int, all_lines[0].split()) # 提取后续4行 strings = all_lines[1:5]
补充:为什么你的splitlines()不起作用?
因为input()只返回一行字符串,splitlines()是把这一行按换行符拆分,但第一行本身没有换行(除非你手动输入了),所以只会返回一个元素的列表,根本碰不到后面的行。要处理多行输入,要么多次调用input(),要么一次性读取全部内容。
内容的提问来源于stack exchange,提问作者Leth




