如何从Python列表提取坐标值用于CAD软件输入?
问题描述
给定列表:
some_list=["PointID:","1","'Y':", "1.134","'X':","1.223", "'Z':","1.0","PointID","2", "'Y':","1.4", "'X':","1.75","'Z':","1.0"]
需要提取其中的坐标值(如1.134、1.223等),保存为TXT文件作为CAD绘图输入,期望输出格式:
Y: 1.134 X: 1.223
尝试过以下代码,但无法获取坐标值:
some_list=["PointID:","1","'Y':", "1.134","'X':","1.2223", "'Z':","1.0","PointID","2", "'Y':","1.4", "'X':","1.75","'Z':","1.0"] for index, element in enumerate(some_list): if element == "'X':" or element == "'Y':" or element == "'Z':": print(index, next(element))
遇到的问题:next()不适用于字符串,element+1也无法获取下一个元素,只能拿到标识的索引和内容,无法提取对应坐标值。
解决方案
直接利用列表的索引定位,因为坐标值始终在对应标识的下一个位置,具体实现如下:
some_list = ["PointID:","1","'Y':", "1.134","'X':","1.223", "'Z':","1.0","PointID","2", "'Y':","1.4", "'X':","1.75","'Z':","1.0"] output_lines = [] for index, element in enumerate(some_list): # 匹配坐标标识 if element in ("'X':", "'Y':", "'Z':"): # 获取下一个元素作为坐标值 coord_value = some_list[index + 1] # 处理标识格式,去掉引号 coord_label = element.strip("'").strip(":") + ":" # 拼接成期望的格式 output_line = f"{coord_label} {coord_value}" output_lines.append(output_line) # 打印输出 print(output_line) # 保存到TXT文件 with open("cad_coords.txt", "w") as f: f.write("\n".join(output_lines))
关键说明:
- 通过
enumerate获取元素的索引,当匹配到坐标标识时,用index+1直接取列表中的下一个元素,这就是对应的坐标值 - 用
strip("'").strip(":")处理标识字符串,把'Y':转换成Y:,符合期望的输出格式 - 收集所有结果后,通过文件写入操作保存到TXT文件,方便CAD软件读取
内容的提问来源于stack exchange,提问作者DZ_FC
相关产品推荐
相关产品推荐

