在 for 循环中列出超出范围的索引(第二次迭代)

list index out of range in for loop (2nd iteration)

在我的程序中,我从数据库中取出一些数据(原始变量)并必须使用它。 使用 print(raw) 时会显示:('x1 y1 z1 \nx2 y2 z2 \nx3 y3 z3 \nx4 y4 z4',) (raw 有超过 450 个元素,所以我缩短了它)

现在我必须获取 x1y1 并将它们转发到另一个模块。为此,我首先拆分 raw

 pass_str = str(raw).split(f'\n')
 print(pass_str)

打印结果如下:["('x1 y1 z1 ", 'x2 y2 z2', 'x3 y3 z3', 'x4 y4 z4',)"]

为了获取单个参数,我使用了一个 for 循环,所以我可以先获取 x1, y1,然后获取 x2, y2,依此类推:

 for i in range(len(pass_str)):
  pass_data = pass_str[i].split()
  el = pass_data[0].split("'", 1)[1]  
  az = pass_data[1]
  task = 'P' + ' ' + az + ' ' + el
  client.send_request(task)

for 循环的第一次迭代没有任何问题。在第二次迭代中,for 循环在 pass_data = pass_str[i].split()

之后停止

问题似乎出现在“el = ...”这一行,我收到错误

Error: list index out of range

您正在尝试使用列表的字符串表示形式,然后对其进行解析以提取一些有意义的数据。列表的字符串表示并不是一个非常有用的数据结构,无法尝试使用!而列表本身就是。

raw =  [('x1 y1 z1 \nx3 y2 z1',)]
pass_str = str(raw).split(f'\n') # ["[('x1 y1 z1 \", "x3 y2 z1',)]"]

您应该将字符串转换为列表,并正确访问它。

raw =  [('x1 y1 z1 \nx3 y2 z1',)]
pass_strings = raw[0][0].split('\n') #["x1 y1 z1","x3 y2 z1"]

for pass_string in pass_strings:
    pass_data = pass_string.split() #['x1','y1','z1']

    el = pass_data[0]
    az = pass_data[1]
    task = 'P' + ' ' + az + ' ' + el
    print(task) #> P x1 y1