Pymel:如何从复杂的 .TXT 文件中提取这些矢量浮点数?

Pymel: How do I extract these vector floats from a complex .TXT file?

我无法思考如何从 Pymel 中的复杂文本文件中提取浮点值。我不是程序员,我是艺术家,但是我需要为特定的工作流程创建脚本,并且我对 python.

有初学者水平的知识

我的目标:使用从另一个程序的特定文本文件解析的 (x,y,z) 坐标创建 3D space 对象。

例如。文本文件:

point 1 8.740349 -4.640922 103.950059
point 2 8.520906 3.447561 116.580496
point 3 4.235010 -7.562914 99.632423
etc., etc

在我的文本文件中,点 # 和矢量浮点数之间还有很多 space。

我想创建一个字典,用于在我的 3D 程序中创建我的对象。

例如,

myDictionary = {(point 1),[8.740349,-4.640922,103.950059]), etc. }.

到目前为止,这是我的代码片段:

def createLocators():
global filePath 
global markerNum
global markerCoord  
print "getting farther! :)"
with open(filePath,'r') as readfile:
    for line in readfile:           
        if "point" in line:             
            Types = line.split('                                                            ')
            markerNum = [Type[1] for Type in Types]
            markerCoord = [Type[2] for Type in Types]
            print markerNum, markerCoord

代码中可以看到,信息之间的space很长。我想如果我可以删除 space 我可以获得两个更易于使用的数据集。文本文档中还有很多我不关心的行,因此 if 语句只过滤以 "point" 开头的行。当我 运行 createLocator() 测试它是否将行拆分为我的两个列表时,它 运行 没问题,但打印对我来说看起来是空的。

例如

[' '] [' ']

我已经尝试在 SO 上使用谷歌搜索和搜索答案,并在 Pymel 和常规 python 文档中搜索我做错了什么或更好的方法,但我不得不承认我的知识范围到此结束。

我做错了什么?有没有更好、更有效的方法来提取我需要但丢失的数据?

感谢阅读!

首先,您可能不希望拆分那一大串空格。事实上,您几乎肯定想要的是不带任何参数地使用 line.split(),因为这将拆分任何种类和数量的空白的所有文本。即:

>>> 'A B      C\t\n\t   D'.split()
['A', 'B', 'C', 'D']

然后,假设你显示的格式是正确的,你应该需要得到Types[2:5],即Types的第二个、第三个和第四个元素作为坐标。

除此之外,您不应该为局部变量使用大写名称,也不应该使用全局变量。改用函数参数,并将 Types 重命名为 split_line 或其他名称。