Python读取文本文件生成嵌套List:每行转为含浮点/字符串的子列表
解决方案:将文本行转换为带类型转换的嵌套列表
修改后的代码(循环版,可读性高)
filename = "locations.txt" with open(filename) as file: locations = [] for line in file: # 拆分每行并清理元素前后空格 parts = [item.strip() for item in line.rstrip().split(',')] # 转换前两个元素为float,保留最后一个为字符串,生成子列表 sub_list = [float(parts[0]), float(parts[1]), parts[2]] locations.append(sub_list) print(locations)
简洁版(列表推导式)
filename = "locations.txt" with open(filename) as file: locations = [ [float(p[0]), float(p[1]), p[2]] for line in file if (p := [item.strip() for item in line.rstrip().split(',')]) and len(p) == 3 ] print(locations)
关键逻辑说明
- 拆分与清理:用
split(',')将每行按逗号分割为字符串列表,再通过strip()去除每个元素的前后空格,避免转换float时因空格报错。 - 类型转换:将前两个分割后的字符串用
float()转为浮点数值,第三个元素保留原始字符串类型。 - 嵌套列表构建:把处理后的子列表逐个添加到上层列表,最终得到符合需求的嵌套结构。
输出结果
运行代码后将得到你期望的格式:
[[35.60479, -105.99888, 'Main Campus'], [35.13575, -106.520126, 'Montoya'], [35.30146, -106.726128, 'Rio Rancho'], [35.1502336, -106.57792, 'STEMULUS Center'], [35.184371, -106.595124, 'ATC']]
内容的提问来源于stack exchange,提问作者Scott Bing
相关产品推荐
相关产品推荐

