如何将文本文件中的行分配给不同类型变量?地铁线路数据存储
解决地铁线路文件读取与类型转换问题
直接上解决方案,核心思路是逐行处理,区分数字行和站点行:
- 先读取文件所有行,过滤掉空行(防止文件末尾或中间的空行干扰)
- 遍历行列表,遇到能转成整数的行,就把它作为当前线路的站点数量,然后取下一个对应数量的行作为站点
- 用合适的数据结构存储,比如列表嵌套字典,方便后续调用
代码示例(Python)
subway_lines = [] # 读取文件内容,替换成你的实际文件路径 with open('subway.txt', 'r', encoding='utf-8') as f: # 读取所有行并过滤空行、去除首尾空白符 lines = [line.strip() for line in f if line.strip()] index = 0 while index < len(lines): # 尝试将当前行转为整数(线路站点数) try: station_count = int(lines[index]) # 截取对应数量的站点行 stations = lines[index+1 : index+1+station_count] # 存入结构化数据 subway_lines.append({ 'station_count': station_count, 'stations': stations }) # 索引跳至下一条线路的起始位置 index += station_count + 1 except ValueError: # 格式异常处理(文件格式正确时不会触发) print(f"无效的线路起始行:{lines[index]}") index += 1 # 验证结果 for line in subway_lines: print(f"站点数:{line['station_count']}") print(f"站点列表:{line['stations']}") print("---")
关键说明
- 用
strip()处理每行,清除换行符和首尾空格,避免空行干扰 - 通过
try-except判断数字行,比直接判断字符是否为数字更稳妥(兼容可能的正整数格式) - 用
while循环配合索引跳转,跳过已处理的站点行,处理效率更高
内容的提问来源于stack exchange,提问作者jason
相关产品推荐
相关产品推荐

