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

时间:2016-08-24 01:25:51

标签: python vector pymel

我无法解决如何从Pymel中的复杂文本文件中提取浮点值的问题。我不是程序员,我是一名艺术家,但是我需要为特定的工作流程创建脚本,并且我对python有初学者的知识。

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

实施例。文本文件:

  

第1点8.740349 -4.640922 103.950059
  第2点8.520906 3.447561 116.580496
  第3点4.235010 -7.562914 99.632423
  等等

我的文本文件中的点#和矢量浮点数之间有更多的空间。

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

例如,

  

myDictionary = {(第1点),[8.740349,-4.640922,103.950059])等。}。

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

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

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

离。

  

[''] ['']

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

我做错了什么?是否有更好,更有效的方法来提取我需要的数据,我缺少这些数据?

感谢阅读!

1 个答案:

答案 0 :(得分:0)

首先,您可能不希望分裂那大量的空间。实际上你几乎肯定想要的是只使用没有参数的line.split(),因为这将拆分任何类型的所有文本,以及任何数量的空白。即:

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

然后,假设您显示的格式正确,您需要获取Types[2:5],即Types的第二,第三和第四个元素,作为坐标。

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