如何从文件中按行对读取输入并分组处理
按行对分组处理文件内容的解决方案
嘿,我来帮你搞定这个按行分组处理的需求!你的现有代码只处理了第一组数据,要实现对整个文件的行对循环处理,我们只需要加个循环持续读取每一对行就好啦。
核心思路
我们需要重复执行以下步骤,直到文件读取完毕:
- 读取第一行(存储喜爱数字的行)
- 读取第二行(存储姓名的行)
- 处理这一组数据(拆分姓名、存储数字行、输出内容)
修改后的完整代码
import sys def process_line_pairs(): while True: # 读取数字行并去除首尾空白 numbers_line = sys.stdin.readline().strip() # 如果读到空字符串,说明文件已经读完,退出循环 if not numbers_line: break # 读取对应的姓名行 name_line = sys.stdin.readline().strip() # 同样检查姓名行是否为空(避免文件末尾只剩一行的情况) if not name_line: break # 将数字行存入数组(这里你可以根据后续需求调整存储方式) number_array = [numbers_line] # 拆分姓名,用split()不带参数会自动处理任意数量的空白分隔符 first_name, last_name = name_line.split() # 输出测试内容(后续可以替换成你的业务逻辑) print(first_name) print(last_name) print(number_array) if __name__ == "__main__": process_line_pairs()
代码说明
- 循环读取:用
while True构建无限循环,直到读取到空行(文件结束)才退出 - 空行判断:每次读取行后先判断是否为空,避免处理无效内容
- 姓名拆分优化:用
split()代替split(" "),这样即使姓名中间有多个空格也能正确拆分 - 可扩展性:你可以把输出部分替换成自己的后续处理逻辑,比如把每组数据存入列表、写入数据库等
测试验证
当你输入示例内容:
1 2 3 John Doe 4 5 6 Queen Mary
运行代码后会得到你期望的输出:
John Doe ['1 2 3'] Queen Mary ['4 5 6']
内容的提问来源于stack exchange,提问作者Jester_of_brothers
相关产品推荐
相关产品推荐

