我有一个长列表,如下所示:
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