You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取坐标文件并拆分x/y坐标时出现TypeError错误的问题排查

问题分析与解决方案

首先,你的代码里有几个关键错误导致了TypeError和逻辑问题:

  1. 错误的列表索引方式:t1[1,0] 用了元组作为索引,而Python列表只接受整数或切片(比如t1[1]或者t1[1:]),这直接触发了list indices must be integers or slices, not tuple错误。
  2. 错误的操作对象:t1是你对单行文本split后的列表,不是文件对象,不能调用readline()方法。
  3. 循环内重复初始化列表:你在for循环里每次都重新创建空的x和y列表,这样最终只会保留最后一个坐标值,而不是所有坐标。

另外,你的原始数据里坐标格式是"x.,y."(末尾带点),需要先处理掉这些多余的点才能正确转成浮点数。

修正后的完整代码

polygons = []  # 用来存储所有多边形的信息

with open('dados_utm.txt', 'rt') as arquivo:
    for line in arquivo:
        line = line.strip()  # 去掉换行符和首尾空白
        if not line:  # 跳过空行
            continue
        
        parts = line.split(' ')
        # 提取名称:第二个元素,去掉转义的引号
        polygon_name = parts[1].replace('"', '')
        # 提取坐标部分:从第三个元素开始的所有内容
        coord_strings = parts[2:]
        
        x_coords = []
        y_coords = []
        for coord in coord_strings:
            # 去掉坐标末尾的点,再按逗号分割
            cleaned_coord = coord.rstrip('.')
            x_str, y_str = cleaned_coord.split(',')
            x_coords.append(float(x_str))
            y_coords.append(float(y_str))
        
        # 将当前多边形的信息存入列表
        polygons.append({
            'type': parts[0],
            'name': polygon_name,
            'x': x_coords,
            'y': y_coords
        })

# 打印结果验证
for poly in polygons:
    print(f"多边形名称: {poly['name']}")
    print(f"X坐标列表: {poly['x'][:3]}...")  # 只打印前3个坐标看效果
    print(f"Y坐标列表: {poly['y'][:3]}...")
    print('---')

代码解释

  1. 使用with语句:这是Python处理文件的最佳实践,会自动帮你关闭文件,避免资源泄漏。
  2. 逐行处理:直接遍历文件对象的每一行,比手动用readline()更简洁。
  3. 跳过空行:处理文件末尾可能出现的空行,避免报错。
  4. 提取名称:通过replace('"', '')去掉转义的双引号,得到干净的多边形名称。
  5. 处理坐标:
    • 先去掉每个坐标字符串末尾的多余点(比如"420545.,8039109."变成"420545.,8039109")
    • 按逗号分割成x和y的字符串,再转成浮点数存入对应的列表。
  6. 结构化存储:用字典存储每个多边形的类型、名称、x/y坐标,方便后续使用。

运行效果

执行后你会得到一个包含所有多边形信息的列表,每个元素都清晰对应了名称和对应的x、y坐标集合,完全符合你的需求。

内容的提问来源于stack exchange,提问作者user11545193

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 09:32:36