如何用Python找到文本文件中指定车型后读取其下一行数据
问题分析与解决方案
你的代码无法获取对应续航数值的核心问题有两个:
- 文件指针位置错误:使用
cars.read()会一次性读取整个文件内容,此时文件指针已移动到文件末尾,后续调用cars.readline()只能读到空字符串。 - 未定位车型的具体行:仅判断车型是否存在于文本中,没有找到车型所在的具体行位置,无法关联到下一行的续航数据。
修正方案一:逐行遍历匹配
这种方式直接逐行读取文件,找到目标车型后立即读取下一行的续航数据:
with open('cars.txt', 'r') as cars: target_car = input("Enter full name of car: ") car_found = False for line in cars: # 去除行尾换行符,避免匹配时受空白字符干扰 current_car = line.strip() if current_car == target_car: # 读取下一行的续航数据 range_percent = next(cars).strip() print(f"Found: {current_car}") print(f"每1%电量可行驶英里数: {range_percent}") car_found = True break if not car_found: print("未找到该车型")
修正方案二:存入列表后索引定位
先将文件内容转为非空行的列表,通过索引直接获取对应续航数据:
with open('cars.txt', 'r') as cars: # 过滤空行并去除每行的换行符 car_data = [line.strip() for line in cars if line.strip()] target_car = input("Enter full name of car: ") try: # 找到目标车型在列表中的索引 car_index = car_data.index(target_car) # 续航数据在车型的下一个位置 range_percent = car_data[car_index + 1] print(f"Found: {target_car}") print(f"每1%电量可行驶英里数: {range_percent}") except ValueError: print("未找到该车型")
原代码问题拆解
cars.read()读取完整文件后,文件指针到达末尾,后续readline()无法读取到有效内容。check in car仅做存在性判断,没有定位到车型的具体行,无法关联后续的续航数据行。
内容的提问来源于stack exchange,提问作者Daily stuff And things
相关产品推荐
相关产品推荐

