取带有数字和名称的列表中的下一个元素



我有一个长列表,如下所示:

some_list=["PointID:","1","'Y':", "1.134","'X':","1.223", "'Z':","1.0","PointID","2", "'Y':","1.4", "'X':","1.75","'Z':","1.0"] 

我需要提取坐标并将其放在txt文件中,该文件将用作CAD软件绘图的输入。我的解决方案是:

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))
The output is: 
2 'Y':
4 'X':
6 'Z':
10 'Y':
12 'X':
14 'Z': 

但实际上,我对坐标1.134、1.223等感兴趣。
类似这样的东西:

Y: 1.134 
X: 1.223 

等等我尝试打印(元素+1(和打印(下一个(元素((,它们当然不起作用,因为。Next使用迭代器,而不是可迭代的。关于如何从列表中挤出坐标,有什么建议吗?我将非常感谢任何帮助。

不确定预期的输出是什么,但这里有一个生成器,可以产生X/Y/Z和以下几点:

some_list=["PointID:","1","'Y':", "1.134","'X':","1.223", "'Z':","1.0","PointID","2", "'Y':","1.4", "'X':","1.75","'Z':","1.0"]
def get_coord(l):
it = iter(l)
for item in it:
if item in ["'X':", "'Y':", "'Z':"]:
item = item.replace("'", '')
yield f"{item} {next(it, None)}"
print('n'.join(get_coord(some_list)))

输出:

Y: 1.134
X: 1.223
Z: 1.0
Y: 1.4
X: 1.75
Z: 1.0

相关内容

最新更新